请教C语言题目
这个题目怎么理解啊?
main( )
{ int x=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf(“%d,%d,%d\n”,x,y,z);
}
程序执行后的输出结果是
A) 3,2,0 B) 3,2,-1 C) 4,3,-1 D) 5,-2,-5
-->这个运算符是怎么计算的?请行家赐教!
参考答案:z--是先判断z>0的表达式,再将z的值自减1
++x是先将x的值自加1,再判断x<5的表达式
while循环是判断z-->0和++x<5这两个表达式的值,如果都为真,那么才执行y自减1的表达式
第一次循环,z(3)>0并且x(1)<5,那么y=5-1=4,此时x=1,y=4,z=2
第二次循环,z(2)>0并且x(2)<5,那么y=4-1=3,此时x=2,y=3,z=1
第三次循环,z(1)>0并且x(3)<5,那么y=3-1=2,此时x=3,y=2,z=0
第四次循环,z(0)不大于0,x(4)虽然小于5,但是前一个条件不满足,为假,所以程序结束
输出第三次循环结果,3,2,0