程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> [C語言]小記q = (++j) + (++j) + (++j)的值

[C語言]小記q = (++j) + (++j) + (++j)的值

編輯:關於C語言

根據不同的編譯器,生產的代碼不一樣,導致的結果也會不一樣。

 

代碼如下:

 #include <stdio.h>
    j =   q =(++j)+(++j)+(++ }

 

環境:win7

編譯器:GCC

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

結果:q = 22

 :    q =(++j)+(++j)+(++    mov         eax,dword ptr [ebp-]           移動J=    add         eax,                                       在寄存器eax值上加1,eax=
 0040103C   mov         dword ptr [ebp-],eax          把寄存器的值移動到變量j上去,j= 
 0040103F   mov         ecx,dword ptr [ebp-]           移動J=    add         ecx,                                       在寄存器上ecx+,j=
    mov         dword ptr [ebp-],ecx          把寄存器ecx上的值移到J上去,J=
    mov         edx,dword ptr [ebp-]         把J=7移動到寄存器edx=
 0040104B   add         edx,dword ptr [ebp-]          edx值+j  此時j=,edx=+
 0040104E   mov         eax,dword ptr [ebp-]          把j=    add         eax,                                       eax再加1,此時寄存器eax=
    mov         dword ptr [ebp-],eax          把此時的eax的值move給 j=
    add         edx,dword ptr [ebp-]           edx值= edx+j = +
 0040105A   mov         dword ptr [ebp-0Ch],edx      edx值 move給 j =  

 

 環境:win7

編譯器:GCC

IDE: VC++ 2008

運行結果:24

  q =(++j)+(++j)+(++  003A1818  add         eax,   //eax = 6
   003A1821  add         ecx,  ecx = 7
   003A182A  add         edx,   edx = 8
     003A1839  mov         dword ptr [q],eax 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved