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.csdn.net/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
今天看的晕乎乎的,涉及到不同编译器调用约定不用,压栈顺序不同等等,若有更好的解释请告我一下。呵呵