c语言问题!!!!高手请进!

来源:百度知道 编辑:UC知道 时间:2024/05/16 03:16:28
有下面一个程序:
main()
{
int x,y,z;
x=0;y=z=-1;
x+=-z---y;
printf("x=%d\n",x);
}
我运行了,答案是X=2,不过我不明白怎样得出的,还有就是x+=-z---y;这个语句是什么意思呢?

呵呵,关键就是这个x+=-z---y;咯.

x+=-z---y就是
x=x+(-z---y)
=x+(-(z--)-y)

这里首先是使用z值,然后z自减,于是
x=0+(-(-1)-(-1))=2

这是你如果printf("x=%d,y=%d,z=%d\n",x,y,z); 的话,就会得到
x=2,y=-1,z=-2了.

以上
x=x+(-z---y)还有一种情况是
=x+(-z-(--y)),与你的运行结果不同.这是C程序版本不同,自左扫描与自右扫描的差异了.

x+=-z---y;

-->

x=x-z-y;
z--;

过程是这样的z=-1,-z=1,-z-y=1-(-1)=2,x=x+2=0+2=2;z--=-1-1=-2
因此,最终结果x=2 y=-1 z=-2