失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > [C语言]小记q = (++j) + (++j) + (++j)的值

[C语言]小记q = (++j) + (++j) + (++j)的值

时间:2022-11-03 09:32:35

相关推荐

[C语言]小记q = (++j) + (++j) + (++j)的值

根据不同的编译器,生产的代码不一样,导致的结果也会不一样。

代码如下:

1 #include <stdio.h>2 void main()3 {4 int j = 5;5 int q;6 q =(++j)+(++j)+(++j);7 }

环境:win7

编译器:GCC

IDE:vc++6.0 /DEV-C++

结果:q = 22

1 6: q =(++j)+(++j)+(++j); 2 00401036 mov eax,dword ptr [ebp-8] 移动J=5到寄存器eax内 3 00401039 add eax,1 在寄存器eax值上加1,eax=6 4 0040103C mov dword ptr [ebp-8],eax把寄存器的值移动到变量j上去,j= 6 5 0040103F mov ecx,dword ptr [ebp-8] 移动J=6到寄存器ecx 6 00401042 add ecx,1 在寄存器上ecx+1,j=6 7 00401045 mov dword ptr [ebp-8],ecx把寄存器ecx上的值移到J上去,J=7 8 00401048 mov edx,dword ptr [ebp-8] 把J=7移动到寄存器edx=7 9 0040104B add edx,dword ptr [ebp-8]edx值+j 此时j=7,edx=7+710 0040104E mov eax,dword ptr [ebp-8]把j=7Move给 第一个寄存器eax11 00401051 add eax,1 eax再加1,此时寄存器eax=812 00401054 mov dword ptr [ebp-8],eax把此时的eax的值move给 j=813 00401057 add edx,dword ptr [ebp-8] edx值= edx+j = 14+814 0040105A mov dword ptr [ebp-0Ch],edxedx值 move给 j = 22

环境:win7

编译器:GCC

IDE: VC++

运行结果:24

1 q =(++j)+(++j)+(++j); 2 003A1815 mov eax,dword ptr [j] //eax = 5,j = 5 3 003A1818 add eax,1 //eax = 6 4 003A181B mov dword ptr [j],eax j = 6 5 003A181E mov ecx,dword ptr [j] ecx = 6 6 003A1821 add ecx,1 ecx = 7 7 003A1824 mov dword ptr [j],ecx j = 7 8 003A1827 mov edx,dword ptr [j] edx = 7 9 003A182A add edx,1 edx = 810 003A182D mov dword ptr [j],edx j = 8 11 003A1830 mov eax,dword ptr [j] eax = 812 003A1833 add eax,dword ptr [j] eax = 1613 003A1836 add eax,dword ptr [j] eax = 2414 003A1839 mov dword ptr [q],eax

如果觉得《[C语言]小记q = (++j) + (++j) + (++j)的值》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。