|
发表于 2013-7-10 09:09:41
|
显示全部楼层
本帖最后由 Anleb 于 2013-7-10 11:41 编辑
这与编译器有关系的,
结果 18 22 21 24都可能
我用DEV-C++ 来给你操作下
环境:win7
编译器:GCC
IDE: DEV-C++
结果:22
我只说 q =(++j)+(++j)+(++j);
6: q =(++j)+(++j)+(++j);
00401036 mov eax,dword ptr [ebp-8] 移动J=5到寄存器eax内
00401039 add eax,1 在寄存器eax值上加1,eax=6
0040103C mov dword ptr [ebp-8],eax 把寄存器的值移动到变量j上去,j= 6
0040103F mov ecx,dword ptr [ebp-8] 移动J=6到寄存器ecx
00401042 add ecx,1 在寄存器上ecx+1,j=6
00401045 mov dword ptr [ebp-8],ecx 把寄存器ecx上的值移到J上去,J=7
00401048 mov edx,dword ptr [ebp-8] 把J=7移动到寄存器edx=7
0040104B add edx,dword ptr [ebp-8] edx值+j 此时j=7,edx=7+7
0040104E mov eax,dword ptr [ebp-8] 把j=7Move给 第一个寄存器eax
00401051 add eax,1 eax再加1,此时寄存器eax=8
00401054 mov dword ptr [ebp-8],eax 把此时的eax的值move给 j=8
00401057 add edx,dword ptr [ebp-8] edx值= edx+j = 14+8
0040105A mov dword ptr [ebp-0Ch],edx edx值 move给 j = 22
|
|