花儿纳吉三无:来帮我解决这个c语言的问题

来源:百度文库 编辑:高考问答 时间:2024/04/28 15:13:28
main()
{int x,y,z;
x=0;y=z=-1;
x+=-z---y;
printf(〃x=%d\n〃,x);
}
要说明这个问题的解答过程哦
哎,下面两位的答案都是错的,更别说解释了

5: x=0;y=z=-1;
00401548 mov dword ptr [ebp-4],0 'x值
0040154F mov dword ptr [ebp-0Ch],0FFFFFFFFh 'z 值
00401556 mov eax,dword ptr [ebp-0Ch]
00401559 mov dword ptr [ebp-8],eax 'y 值
6: x+=-z---y;
0040155C mov ecx,dword ptr [ebp-0Ch]
0040155F neg ecx 'z先变换符号=-z
00401561 sub ecx,dword ptr [ebp-8] '拿z-y ecx 现在是1-(-1)=2
00401564 mov edx,dword ptr [ebp-4]
00401567 add edx,ecx 'x+(z-y)
00401569 mov dword ptr [ebp-4],edx x赋值回自己 所以x为0+2=2
0040156C mov eax,dword ptr [ebp-0Ch]
0040156F sub eax,1 'y自己减1
00401572 mov dword ptr [ebp-0Ch],eax 'z=y 所以z=-2

最后x=2 y=-1 z=-2

x=x+1-1

x+=-z---y等价于x=x+(-z-(--y))打印结果为x=3

x=-2