源程序:
#include "iostream"
using namespace std;
int main()
{
int i=3;
int m=0;
int n=0;
m=(++i)+(i++)+(++i);
cout<<m<<endl;
return 0;
}
此程序在VS2010中得出的结果为15,在VC6.0中的结果为13,有关反汇编代码如下(左VS2010,右VC6.0):
根据汇编代码可知,VS2010中,先执行了两次 (++i)操作,此时i=5,再进行 加和 操作m=5+5+5,最后执行(i++),i=6。最终m=15,i=6
VC6.0中,先执行了一次 (++i),然后放入寄存器中,再加一次i,然后执行第二个的右++操作,再加一次i,最后又执行了一次加1操作(这地方没弄明白为什么要先使用后加1。。。)最终m=13,i=6
以上是我自己分析,不当之处请留言