月经贴,这种无聊的题目每2周都会出现一才。
x=4 不解析
x=10 这个和编译器有关
debug版本
int x=1,y=0;
012C14BE
mov
dword ptr [x],1
012C14C5
mov
dword ptr [y],0
y=++x + ++x + ++x;
012C14CC
mov
eax,dword ptr [x]
012C14CF
add
eax,1
012C14D2
mov
dword ptr [x],eax
012C14D5
mov
ecx,dword ptr [x]
012C14D8
add
ecx,1
012C14DB
mov
dword ptr [x],ecx
012C14DE
mov
edx,dword ptr [x]
012C14E1
add
edx,1
012C14E4
mov
dword ptr [x],edx
012C14E7
mov
eax,dword ptr [x]
012C14EA
add
eax,dword ptr [x]
012C14ED
add
eax,dword ptr [x]
012C14F0
mov
dword ptr [y],eax
printf("x=%d y=%d\n",x,y);
x=4 y=12
releasa 版本
void main()
{
int x=1,y=0;
y=++x + ++x + ++x;
printf("x=%d y=%d\n",x,y);
00011000 push 0Ch
00011002 push 4
00011004 push offset string "x=%d y=%d\n" (120F4h)
00011009
call
dword ptr [__imp__printf (120A0h)]
0001100F
add
esp,0Ch
}
注意红色的。编译器直接把结果push 进去了。变态吧,建议楼主没有必要折腾这类型应试教育的题目。知道 ++ 是自增1 就行了