请问关于C中++x||++Y&&++z的问题

一个C程序:
main()
{int x,y,z;
x=y=z=0;
++x||++y&&++z;
printf("x=%d\ty=%d\tz=%d\n",x,y,z);}

请问具体怎样计算xyz,为什么x,y,z不是全部自加后均是1?
x=y=z=-1;++z&&++y||++z;printf("x=%d\ty=%d\tz=%d\n",x,y,z);
x=y=z=-1;++z||++y&&++z;printf("x=%d\ty=%d\tz=%d\n",x,y,z);
x=y=z=-1;++z||++y&&++z;printf("x=%d\ty=%d\tz=%d\n",x,y,z);
x=y=z=-1;++z&&++y&&++z;printf("x=%d\ty=%d\tz=%d\n",x,y,z);

第1个回答  2007-09-04
这个东西是表达式运算顺序的问题,当"++X"为真以后,"||"后面的表达式其实是没有被运行的.
所以结果应该是X=1 Y=0 Z=0
第2个回答  2007-09-04
又是短路求值的问题,与之相关的信息我已经存入 百度百科,请参阅以下页面

http://baike.baidu.com/view/1083418.htm
第3个回答  2007-09-05
yue2=3.2
第4个回答  2007-09-06
GHJGJYH

请问关于C中++x||++Y&&++z的问题
这个东西是表达式运算顺序的问题,当"++X"为真以后,"||"后面的表达式其实是没有被运行的.所以结果应该是X=1 Y=0 Z=0

c语言表达式t=++x||++y&&++z;怎么理解,小弟初学,看不懂,求老师指点...
1。算++y&&++z就是计算y&&z只要y与z都不为0,那么结果为1,否则为0;2。随后算++x||(++y&&++z),令d=++y&&++(这句是为了容易理解才写的),随后判断x||d,只要x与d至少一个不为0,那么结果就是1,否则结果为0;3。然后把结果给t;4。最后x y z三个数的值各加1 ...

c语言++x||++y&&++z输出的xyz是什么
a&&b,如果a为false, 则b表达式不执行,a||b,如果a为true,则b表达式不执行 假如开始时:x = 1, y = 1, z = 1,则结果为:x= 1 y = 2, z = 2

c语言 ++x||++y&&++z
则或运算的表达式为真,则其后的++y不执行,所以到此x=1,y=0;继续执行后面的与运算,由于前面的++x||++y表达式为真,不能够决定整个与运算表达式是否为1,则继续执行++z,所以有z=1,所以该表达式的值为1。。。

C语言中逻辑运算的“短路”特点的疑问。
你的陈述正确;你的疑问是没搞清||和&&的优先级,&&要比||高一级,所以++x||++y&&++z;的实质是++x||(++y&&++z);,所以||后面的整个表达式都不计算了。你的疑问与第1一样,但表述有错。++x是前++,要先计算,所以++x的值是1;但&&两边都为“真”才能确定这“真”,有一边或两边都为...

C语言中,++x||++y&&++z的意思是?还有++x&&++y&&++z???
1,++x||++y&&++z 先给x + 1,若等于0,计算右边,分别给y和z +1后若不为0整个表达式不为0,若x +1不等于0则不计算右边的表达式;2,++x&&++y&&++z 先给x +1, 若不等于0,计算右边,给y +1若不等于0,计算右边,给z +1若不等于0表达式不等于0;否则整个表达式为0;3...

当x=y=z=0时,c语言中++x || ++y && ++z; x ,y,z的值是多少
y和z还是原始值0.四、 综上, 执行后x=1, y=0, z=0.五、 编写如下程序验证:include <stdio.h>int main(){ int x, y, z;x=y=z=0;++x||++y&&++z;\/\/原始表达式printf("%d %d %d\\n", x,y,z);\/\/输出三个值。 return 0;}最终输出1 0 0. 验证了结论。

请问c语言t=++x||++y&&++z这句话是什么意思?
c ++x||++y&&++z ++x = 2 , ++y = 2 , ++z = 1 (++x||++y)&&++z,可以这样来分,前面因为++x=2 所以扩号的值是1 1&&++z = 1&&1=1 这些都是逻辑判断,不要去理会具体等于多少,只要看它等于0还是等于1就可以了 ...

x=y=z=1 t=++x||++y&&++z 求t,x,y,z的值
首先是从左往右的。t=++x||++y&&++z 第一步:t= (++x) || (++y&&++z);因为||这个符号的优先级最低。第二步:++x; 执行完之后x=2;(对于||这个符号有个特点就是如果左边是非零,那么直接就返回值了,不用执行右边了。因为没有意义,1或0还是1.)第三部:||左边是非零,...

C语言中语句++xⅡ++yⅡ++z;是什么意思?
首先要说的是这++x||++y||++z 中间的||是回车键上方的竖线,不是大写的i。这个的意思是一个判断,就是当x,y,z三个变量,各自加1以后的值三个变量不全部是0,就认为是满足条件。

相似回答