在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],它實現了這句話成爲廢碼的功能。
原創:希望指教