c语言:int x,y,z,w; x=y=z=1; w=++x||++y&&++z; 经过计算后w,x,y,z的值分别为多少,为什么?

c语言:int x,y,z,w; x=y=z=1; w=++x||++y&&++z; 经过计算后w,x,y,z的值分别为多少,为什么?

#include<iostream>
using namespace std;
int main()
{
int x,y,z,w;
x=y=z=1; //x=1,y=1,z=1;
w=++x||++y&&++z;//x=2,因为++x之后x=2;++x整个表达式也为2>0,所以||后的运算就停止了w= 1;y=1;z=1;
///或运算遇到大于等于0就返回1.不再向后计算。

cout<<"w="<<w<<endl;
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
cout<<"z="<<z<<endl;

return 0;
}
结果:w=1.x=2.y=1,z=1
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-02
x=y=z=1
++x,所以x=2,又因为||运算符的规则是左边为真,右边就不需要算了,所以y=1不变
++z,所以z=2
所以得x=2,y=1,z=2
第2个回答  2011-11-02
x=1 y=1 z=1 w=3
前方提 x=y=z=1
w=++x||++y&&++z
w=x+y+z int
即为x=1 y=1&& z=1 w=3
懂了?

c语言:int x,y,z,w; x=y=z=1; w=++x||++y&&++z; 经过计算后w,x,y,z...
x=y=z=1; \/\/x=1,y=1,z=1;w=++x||++y&&++z;\/\/x=2,因为++x之后x=2;++x整个表达式也为2>0,所以||后的运算就停止了w= 1;y=1;z=1;\/\/\/或运算遇到大于等于0就返回1.不再向后计算。cout<<"w="<<w<<endl;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;cout<<"z="...

...变量x=y=z=1,执行逻辑表达式++x&&y--||++z后,x,y,z的值分别为 。
2,1,1 首先&&的优先级高于||,所以表达式可写为 w=++x||(++y&&++z);与&&和||连接的表达式按从左到右的顺序进行求值,在知道结果为真或者假后立即停止计算 ||和&&都是序列点,所以先算++x的值=2,整个表达式的结果为真,后面的就不用算了。最后结果就是 x=2,y=1,z=1 ...

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

...t的值为( ) x=y=z=1; t=++x||++y&&++z;求过程。
x=y=z=1; \/\/首先执行这一句:把1赋值给z,再把z的值给y,再把y的值给x x,y,z的值都等1 t=++x||++y&&++z; \/\/在这一条语句中,赋值号=的运算级别最低,因此先算++x||++y&&++z \/\/先算++X后x=2 表达为 x||++y&&++z \/\/++y 后 y=2 表达为 x||y&&++z \/\/++z ...

C语言 main() {int x,y,z x=y=1 z=x+(++y||++z)这里面,这个(++y||...
|| 是或运算,若两边的表达式一个为真则整个表达式为真,++y的值是2,即为真,不必判断++z,所以(++y ||++z)表达式的值为1,则z = x+1 = 2。

...变量x=y=z=1,执行逻辑表达式++x&&y--||++z后,x,y,z的值分别为 。
执行逻辑表达式++x&&y--||++z后,x,y,z的值分别为2、0、1

...int x,y,z,t; x=y=z=1; t=++x||++y&&++z; printf("x=%d y=%d z=...
include <stdio.h>int main(){int x,y,z,t;x=y=z=1;t=++x||++y&&++z;printf("x=%d y=%d z=%d t=%d\\n",x,y,z,t);return 0;}运行结果:x=2 y=1 z=1 t=1 你说t是怎么算的?你呢应该是迷糊t=++x||++y&&++z;这个表达式是吧 好 你要搞清楚这个问题你就得知道运算符...

设x,y,z,t均为整型变量,现有如下语句x=y=z=1;t=++x||++y&&++z;则...
x=y=z=1表示给x,y,z赋值,这时x,y,z的值都是1了;t=++x||++y&&++z表示将++x||++y&&++z的运算结果赋值给t;具体就是:先进行++y&&++z运算,因为&&(与运算)的优先级逼||运算的优先级高,++y后y等于2,++z后z等于2所以++y&&++z后结果为1;(逻辑运算你应该知道吧?为真就是1,...

...int x,y,z; x=y=z=1; ++x&&y--||++z; cout<<x<<y<<endl;}输出为什么...
C++编译器对代码有优化功能。在 1||x 和 0&&x 里(x为数或表达式),因为无论x如何取值,最后结果都是一样的,所以代码执行到这里时,都会直接忽视x然后返回结果;如果x是一个表达式,那么这个表达式也不会执行。"++x && y-- || ++z"等价于"(++x && y--) || ++y"。括号里的计算式计算...

main() { int x,y,z; x=y=z=1; if(++x||++y&&++z) printf("%d,%d,%d...
++x先用x 然后再自加 初始x=1,即为真,所以||后面的条件不执行 优先级从左到右,所以&&无效 0为假,非0为真,与是不是算式无关

相似回答