C语言问题,这段程序的结果是什么,为什么

来源:百度知道 编辑:UC知道 时间:2024/07/03 08:47:53
main()
{
int x=0,y=5,z=3;
while(z-->0&&++x<5)y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
结果是什么?还有为什么?

输出结果为3,2,-1
z--相当于z=z-1,++x相当于x=x+1
你可以仔细分析一下循环体执行了3次,3次之后x=3,y=2,z=0,但z--语句有个特点,--为后缀,即当z>0判断完之后再减一,所以z=z-1=0-1=-1

喔草,这是什么

结果是3,2,-1 。你看while z-->0是真命题,可是后天的++x是1>5是真的。所以执行y=y-1登陆4。然后在判断while里面的条件。知道while里面的条件是假的时候结果。就是这样的,你自己慢慢分析一下,在看下书。主要运算符的优先级。就知道了