int i=8;
printf("%d/t%d/t%d/t%d/t%d/t%d/n",i,++i,--i,i--,i++,-i--);
printf("%d/n", i);
vc6.0 debug版本为:
8 8 7 8 8 -8
7
vc6.0 Release版本输出为
7 7 7 8 8 -8
7
vs2005 debug:
7 7 7 8 7 -8
7
vs2005 release:
8 8 8 8 8 -8
7
原因可以参考一下帖子:
http://community.youkuaiyun.com/Expert/topic/5386/5386406.xml?temp=3.261966E-02
又:
int i=8;
cout << i << ++i << --i << i-- << i++ << -i-- << endl;;
cout << i << endl;
vs2005 debug
77787-8
7
vs2005 release:
88888-8
7
今天看的晕乎乎的,涉及到不同编译器调用约定不用,压栈顺序不同等等,若有更好的解释请告我一下。呵呵

本文探讨了在不同C++编译器环境下,同一段涉及变量声明、自增自减运算符及输出操作的代码所产生的不同结果。通过对比VC6.0、VS2005等编译器在Debug与Release模式下的表现,分析了调用约定、压栈顺序等因素对程序行为的影响。
3780

被折叠的 条评论
为什么被折叠?



