c#裏的a=a++和c++裏的a=a++

    在c#裏的a=a++輸出結果,並沒有加一,而在c++裏的a=a++卻加了1,查看反彙編,可知道在C#裏這個語句,可能被淘汰了,我們 得出C#彙編源碼

  

   a=a++;
0000003c  mov         eax,dword ptr [ebp-40h] 
0000003f  mov         dword ptr [ebp-44h],eax 
00000042  inc         dword ptr [ebp-40h] 
00000045  mov         eax,dword ptr [ebp-44h] 
00000048  mov         dword ptr [ebp-40h],eax 
            Console.WriteLine(a);
0000004b  mov         ecx,dword ptr [ebp-40h] 
0000004e  call        5D323450 
00000053  nop 

猜測:因爲a++直接可以實現a自動加1的功能,而無需用到這樣語句a=a++;在上述的彙編中,裏面有個新的臨時變量[ebp-44h],它實現了這句話成爲廢碼的功能。


原創:希望指教

發佈了21 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章