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
懂了?
相似回答