在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],它实现了这句话成为废码的功能。
原创:希望指教