首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C语言,自加自减顺序的有关问题,请帮忙解释解释,多谢

2013-08-14 
C语言,自加自减顺序的问题,请帮忙解释解释,谢谢。这个是例子啊,main(){int i8printf(%d\n%d\n%d\n%d\n%\

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 结果一样是不可靠的 
这里的问题不是优化 而是未定义行为

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

热点排行