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;通過以上**我們可以得出vc編譯器對於此類問題的處理方式,從左往右進行處理,對於i++,統一放到表示式結果出來後再增加i的值,對於++i,按照從左往右,兩項相加作為臨時結果,兩項相加的時候,我們取i為++i結果的值,這樣整個表示式就相當於減少了乙個變數,按照以上方法計算整個表示式的值。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編譯器設定
工欲善其事,必先利其器 要想用 vc開發出高效率程式,必須對 vc編譯器有充分的了解。如果我們已經習慣編譯器給我的預設設定,那麼現在起開始嘗試改變吧 本篇文章 或者後續文章 講解 vc編譯器設定選項並沒有先後順序,只是作者在具體開發過程碰見了不同的編譯設定,進行深入了解,做此文章記錄。也希望讀到這篇...
VC編譯器設定
工欲善其事,必先利其器 要想用 vc開發出高效率程式,必須對 vc編譯器有充分的了解。如果我們已經習慣編譯器給我的預設設定,那麼現在起開始嘗試改變吧 本篇文章 或者後續文章 講解 vc編譯器設定選項並沒有先後順序,只是作者在具體開發過程碰見了不同的編譯設定,進行深入了解,做此文章記錄。也希望讀到這篇...
VC編譯器選項
cl.exe 是控制 microsoft c 和 c 編譯器與鏈結器的 32 位工具。編譯器產生通用物件檔案格式 coff 物件 obj 檔案。鏈結器產生可執行檔案 exe 或動態鏈結庫檔案 dll 注意,所有編譯器選項都區分大小寫。若要編譯但不鏈結,請使用 c。使用 nmake 生成輸出檔案。使用...