求助++问题,为毛会这样
q=5,q=(++j)+(++j)+(++j) 我觉得应该是6+7+8=21但是编译器的结果却是6+8+8=22求大神解释,我用的是vc++6.0 这是vc++6.0的编译器搞的鬼(ps:可能有的编译器,编译结果并不一样。),它编译的时候逻辑是先把前两个进1,然后运算完之后,在把第三个进1.也就是:q=5,
q=(++j)+(++j)+(++j)
编译器先运算前两个(++j)+(++j)。赋值为7+7;
然后在将最后一个(++j)赋值为8;
最后结果就等于 q=7+7+8=22 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]