谁能帮我解释下这段程序的答案

来源:百度知道 编辑:UC知道 时间:2024/06/21 18:43:11
void main()
{int x=0,y=5,z=3;
while(z-->0&&++x<5)
{y=y-1;
}
printf("%d,%d,%d",x,y,z);

}
不知道为什么答案是3,2,-1
能不能帮忙解释下,谢谢,如果可以,请尽量详细些

读到++x直接加1;z--在判断后减1:
x y z x y z x y z
原:0 5 3 y-1
while中:1 5 3->while后:1 5 2-->1 4 2
while中:2 4 2->while后:2 4 1-->2 3 1
while中:3 3 1->while后:3 3 0-->3 2 0
下一次while(z-->0&&++x<5)时:
z==0跳出判断,程序已读到z--使z变成-1,未读入++x,x不自增,
3 2 0->3 2 -1