读书人

C语言自加自减顺序的有关问题请帮

发布时间: 2013-08-14 14:27:55 作者: rapoo

C语言,自加自减顺序的问题,请帮忙解释解释,谢谢。
这个是例子啊,
main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%\n%d\n",++i,--i,i++,i--,-i++,-i--);
}
然后书上说结果是8,7,7,8,-7,-8;
运行的结果是8,8,7,8,-7,-8;
是不是例子有错?
还有,++i,--i这两个计算结果怎么都是8?
高手指点指点,谢谢。 C
[解决办法]

引用:
Quote: 引用:

你用volatile int i=8;结果就会和你书上一样了,可能是优化问题吧
加上这个volatile 结果一样是不可靠的
这里的问题不是优化 而是未定义行为

这样啊。。学习下
[解决办法]
这是未定义行为,不同的编译器会有不同的结果。
[解决办法]
其实没必要弄这么复杂的自增自减问题
不同的编译器造成不同的结果
到了公司中,是不用自增自减的
因为公司都要求在不同环境下均能正确运行
学编程语言是为了以后的工作
所以楼主如果弄不明白就不要去纠结了
[解决办法]
编译器可以任意处理这种情况,这种自己不做抉择的代码,编译器决定的结果,不一定是你想要的结果。
对于未定义行为,编译器可以自主决定,这种代码,已经不再你的掌控之中了。

读书人网 >C++

热点推荐