急需解答简单的C语言程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/08 04:44:37
main()
{int z=6;
printf("%d",z+=z-=z*=z);
printf("%d",z*=3+6);
}
第一个答案为0,是对的.怎么我的输出第二个结果也是0啊?不应该是54吗?
是不是我自己验算的程序写错啦?

执行完下面这条语句以后,z已经变成0了
printf("%d",z+=z-=z*=z);

然后再printf("%d",z*=3+6);

等价于
z=z*(3+6);
printf("%d",z);
结果当然还是0了~!

执行第一条语句时:先是z*z=36,z-z=36-36=0,最后z+z=0+0,所以结果是0,你是对的
第二个结果中z是你第一个结果中z的取值,也就是0
所以答案就像上面“pengxuan321 ”朋友说的那样为0了。

变量属于动态变量,在执行完第一次输出后,Z=0,因此第二次输出还是0

z+=z-=z*=z运算完后z=0,z=z*(3+6)当然是0*(3+6)=0了啊