13754276613 发表于 2013-11-11 22:08:47

求助++问题,为毛会这样

q=5,q=(++j)+(++j)+(++j)    我觉得应该是6+7+8=21但是编译器的结果却是6+8+8=22求大神解释,我用的是vc++6.0

bigshan 发表于 2013-11-11 22:18:22

这是vc++6.0的编译器搞的鬼(ps:可能有的编译器,编译结果并不一样。),它编译的时候逻辑是先把前两个进1,然后运算完之后,在把第三个进1.也就是:
q=5,
q=(++j)+(++j)+(++j)
编译器先运算前两个(++j)+(++j)。赋值为7+7;
然后在将最后一个(++j)赋值为8;
最后结果就等于   q=7+7+8=22

狼性刀锋 发表于 2013-11-12 22:42:42

8:   q=(++j)+(++j)+(++j);
0040D75F   mov         eax,dword ptr
0040D762   add         eax,1
0040D765   mov         dword ptr ,eax
0040D768   mov         ecx,dword ptr
0040D76B   add         ecx,1
0040D76E   mov         dword ptr ,ecx
0040D771   mov         edx,dword ptr
0040D774   add         edx,dword ptr
0040D777   mov         eax,dword ptr
0040D77A   add         eax,1
0040D77D   mov         dword ptr ,eax
0040D780   add         edx,dword ptr
0040D783   mov         dword ptr ,edx
仔细看下汇编代码吧   ,跟楼上说的是正确的!
页: [1]
查看完整版本: 求助++问题,为毛会这样