关于 a = 2 * a++ *(3 – ++a)的运算过程分析:
将以上源代码进行反汇编之后的结果如下:
int a = 2;
00C313DE mov dword ptr [a],2 // a = 2;
a = 2 * a++*(3 - ++a);
//进行++a运算 |
00C313E5 mov eax,dword ptr [a]
00C313E8 add eax,1
00C313EB mov dword ptr [a],eax
// 进行3 – (++a)运算 |
00C313EE mov ecx,3
00C313F3 sub ecx,dword ptr [a]
// 进行2 * a运算 |
00C313F6 mov edx,dword ptr [a]
00C313F9 shl edx,1