VC編譯器下多個i , i的相加

2021-05-25 09:00:58 字數 3230 閱讀 9092

1:  #include "stdafx.h"
2:
3:  

int main(int argc, char** argv)

4:

12:       int i = 1;

00401268   mov         dword ptr [ebp-4],1

13:       int j = (++i)+(++i)+(++i);

0040126f   mov         eax,dword ptr [ebp-4]

00401272   add         eax,1

00401275   mov         dword ptr [ebp-4],eax //++i將i的值加1  i=2

00401278   mov         ecx,dword ptr [ebp-4]

0040127b   add         ecx,1

0040127e   mov         dword ptr [ebp-4],ecx //++i再將i的值加1 i=3

00401281   mov         edx,dword ptr [ebp-4] //將i的值存入edx中

00401284   add         edx,dword ptr [ebp-4] //將i的值與edx中的值相加存入到edx中 相當於2*i=2*3=6

00401287   mov         eax,dword ptr [ebp-4]

0040128a   add         eax,1

0040128d   mov         dword ptr [ebp-4],eax//++i再將i的值加1  i=4

00401290   add         edx,dword ptr [ebp-4]//將前面兩個++i的和edx與最後一次++i  的i相加 edx+i = 6+4 = 10

00401293   mov         dword ptr [ebp-8],edx

1:  #include "stdafx.h"
2:
3:  

int main(int argc, char** argv)

4:

10:       int i = 1;

00401268   mov         dword ptr [ebp-4],1

11:       int j = (i++)+(i++)+(i++);

0040126f   mov         eax,dword ptr [ebp-4]

00401272   add         eax,dword ptr [ebp-4]

00401275   add         eax,dword ptr [ebp-4]

00401278   mov         dword ptr [ebp-8],eax

//以上**直接將沒有變化的i相加3次  j=1+1+1 =3

0040127b   mov         ecx,dword ptr [ebp-4]

0040127e   add         ecx,1

00401281   mov         dword ptr [ebp-4],ecx

//i = i +1

00401284   mov         edx,dword ptr [ebp-4]

00401287   add         edx,1

0040128a   mov         dword ptr [ebp-4],edx

//i = i +1

0040128d   mov         eax,dword ptr [ebp-4]

00401290   add         eax,1

00401293   mov         dword ptr [ebp-4],eax

//i = i +1

//將i沒有自加的結構相加放入j,然後i再自加三次。

1:  #include "stdafx.h"
2:
3:  

int main(int argc, char** argv)

4:

10:       int i = 1;

00401268   mov         dword ptr [ebp-4],1

11:       int j = (i++)+(++i)+(i++);

0040126f   mov         eax,dword ptr [ebp-4]

00401272   add         eax,1

00401275   mov         dword ptr [ebp-4],eax

//以上**將i=i+1

00401278   mov         ecx,dword ptr [ebp-4]

0040127b   add         ecx,dword ptr [ebp-4]

0040127e   add         ecx,dword ptr [ebp-4]

00401281   mov         dword ptr [ebp-8],ecx

//以上**將j = i+i+i

00401284   mov         edx,dword ptr [ebp-4]

00401287   add         edx,1

0040128a   mov         dword ptr [ebp-4],edx

//i = i+1

0040128d   mov         eax,dword ptr [ebp-4]

00401290   add         eax,1

00401293   mov         dword ptr [ebp-4],eax

//i = i+1

通過以上**我們可以得出vc編譯器對於此類問題的處理方式,從左往右進行處理,對於i++,統一放到表示式結果出來後再增加i的值,對於++i,按照從左往右,兩項相加作為臨時結果,兩項相加的時候,我們取i為++i結果的值,這樣整個表示式就相當於減少了乙個變數,按照以上方法計算整個表示式的值。

VC編譯器設定

工欲善其事,必先利其器 要想用 vc開發出高效率程式,必須對 vc編譯器有充分的了解。如果我們已經習慣編譯器給我的預設設定,那麼現在起開始嘗試改變吧 本篇文章 或者後續文章 講解 vc編譯器設定選項並沒有先後順序,只是作者在具體開發過程碰見了不同的編譯設定,進行深入了解,做此文章記錄。也希望讀到這篇...

VC編譯器設定

工欲善其事,必先利其器 要想用 vc開發出高效率程式,必須對 vc編譯器有充分的了解。如果我們已經習慣編譯器給我的預設設定,那麼現在起開始嘗試改變吧 本篇文章 或者後續文章 講解 vc編譯器設定選項並沒有先後順序,只是作者在具體開發過程碰見了不同的編譯設定,進行深入了解,做此文章記錄。也希望讀到這篇...

VC編譯器選項

cl.exe 是控制 microsoft c 和 c 編譯器與鏈結器的 32 位工具。編譯器產生通用物件檔案格式 coff 物件 obj 檔案。鏈結器產生可執行檔案 exe 或動態鏈結庫檔案 dll 注意,所有編譯器選項都區分大小寫。若要編譯但不鏈結,請使用 c。使用 nmake 生成輸出檔案。使用...