#include<stdio.h> void main() { int x,y,z,t; x=y=z=1; t=++x||++y&&++z; p

#include<stdio.h>
void main()
{
int x,y,z,t;
x=y=z=1;
t=++x||++y&&++z;
printf("x=%dy=%dz=%dt=%d\n",x,y,z,t);
}
求解为啥结果是x=2y=1z=1t=1
而且将第6行修改为
t=--x||--y&&--z;
时输出的是x=0y=0z=1t=0

当判断++x时,x值为2,已经为真,所以||后面的表达式就不需再判断,整个表达式的值为1(t=1)
结果是x=2y=1z=1t=1
将第6行修改为
t=--x||--y&&--z;
当判断++x时,x值为0,即假,所以||后面的表达式需继续判断。--y的值为0因为后面是&&,所以后半部分的值为0。所以,整个表达式的值为0(t=0)
输出的是x=0y=0z=1t=0追问

x=2y=1z=1t=1是怎么得出的。。。

追答

因为先有x=y=z=1
再有x++

上面的x++,应该是++x

温馨提示:答案为网友推荐,仅供参考
相似回答