|
发表于 2014-7-6 16:04:09
|
显示全部楼层
楼主,咱们同是菜鸟,互相帮助。
k=(++i)+(++i)+(++i);
0040D7BF mov eax,dword ptr [ebp-4]
0040D7C2 add eax,1
0040D7C5 mov dword ptr [ebp-4],eax
0040D7C8 mov ecx,dword ptr [ebp-4]
0040D7CB add ecx,1
0040D7CE mov dword ptr [ebp-4],ecx
0040D7D1 mov edx,dword ptr [ebp-4]
0040D7D4 add edx,dword ptr [ebp-4]
0040D7D7 mov eax,dword ptr [ebp-4]
0040D7DA add eax,1
0040D7DD mov dword ptr [ebp-4],eax
0040D7E0 add edx,dword ptr [ebp-4]
0040D7E3 mov dword ptr [ebp-8],edx
如果汇编没学过,就看下边:
从右往左分析:
先计算最右边的++i,此时i = 4;
然后计算中间的++i,此时i = 5;
然后计算(++i)+(++i),就是后边两个++i相加赋值给i,此时i = 10
最后计算++i(此时i = 6) 然后加上上一步的结果,得到16 |
|