一道C语言的逻辑运算问题 很基础的 求解答16.下面程序的输出结果是 A 。 main() {int x,y,z; x=y=1; z=x++-1; printf(“%d,%d\t”,x,z); z+=-x+++(++y||++z); printf(%d,%d”,x,z); } A)2,0 3,-1 B)2,1 3,0 C)2,0 2,1 D)2,1 0,1只有第二次输出的z 我不懂为什么=-1z+=-x+++(++y||++z);中的(++y||++z)部分
2019-05-30
一道C语言的逻辑运算问题 很基础的 求解答
16.下面程序的输出结果是 A 。
main()
{int x,y,z;
x=y=1;
z=x++-1;
printf(“%d,%d\t”,x,z);
z+=-x+++(++y||++z);
printf(%d,%d”,x,z);
}
A)2,0 3,-1 B)2,1 3,0
C)2,0 2,1 D)2,1 0,1
只有第二次输出的z 我不懂为什么=-1
z+=-x+++(++y||++z);中的(++y||++z)部分能化成数字? 这里等于1?
优质解答
++y等于2,++z等于1,“或”的结果为1。-x++=-2,所以z=-1。
对于数字,“非零”即为真 所以4||5=1,3&&2=1
++y等于2,++z等于1,“或”的结果为1。-x++=-2,所以z=-1。
对于数字,“非零”即为真 所以4||5=1,3&&2=1