i++ and ++i的誤解

不知在那本書上看到 ++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  
}

一看就明白了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章