不知在那本書上看到 ++i比i++要快(i++需要一個臨時變量存儲i的值後再++),就記住這個一直沒測試,所以在寫代碼的時候 一直就使用++i覺得它快。今天測試了下發現並不是這麼回事,一直被誤解。所以寫了簡單的demo測試了下:
int main()
{
int a,c;
a = 0;
a++;
++a;
c =a++;
c = ++a;
c = a+1;
return 0;
}
看下反彙編代碼吧(Windows上):
int a,c;
a = 0;
00181B88 mov dword ptr [a],0
a++;
00181B92 mov eax,dword ptr [a]
00181B98 add eax,1
00181B9B mov dword ptr [a],eax
++a;
00181BA1 mov eax,dword ptr [a]
00181BA7 add eax,1
00181BAA mov dword ptr [a],eax
c =a++;
00181BB0 mov eax,dword ptr [a]
00181BB6 mov dword ptr [c],eax
00181BBC mov ecx,dword ptr [a]
00181BC2 add ecx,1
00181BC5 mov dword ptr [a],ecx
c = ++a;
00181BCB mov eax,dword ptr [a]
00181BD1 add eax,1
00181BD4 mov dword ptr [a],eax
00181BDA mov ecx,dword ptr [a]
00181BE0 mov dword ptr [c],ecx
c = a+1;
00181BE6 mov eax,dword ptr [a]
00181BEC add eax,1
00181BEF mov dword ptr [c],ea
return 0;
00181BF5 xor eax,eax
}
一看就明白了