x,y,z均为int型,执行下列语句后,x,y,z的值分别是
x=1;y=0;z=2;
y++&&++z||++x;
我看试卷答案是2,1,2 其中不解的是为什么++z的z为什么还是2而不是3?
这就要说c++的特性了
执行语句1和语句2
只执行语句1(特性,都是特性)
因为语句1是0,语句2不管是1还是0,结果都是0
执行语句1和语句2
只执行语句1(特性,都是特性)
因为语句1是1,语句2不管是1还是0,结果都是1
此题还有一点!
先将y+=1;再使用y
先使用y,再将y+=1;
int a=0;
a+=!(a++&&++a);
cout<<a;
选择(输出的答案):
A.0 B.1 C.2 D.3
(答案见下(请先在心里想好再看))
C
解析:
int a=0;//定义变量a,并将1赋值给a
a+=!(a++&&++a);//结果:a+=!(0(运行后a+=1)&&1(a+=1)(不执行));
a+=!(0(0&&1))
a+=1;
因为a++所以a最后再+1
cout<<a;//输出a的值(2)
y++&&++z||++x;
从左到右执行
y++是先把y用完再自加
++x是加完再用
左&&右 是找0,从左到右,左边是0,就不看右边了
左||右 是找1,从左到右,左边是1,就不看右边了
综合
1、y&&++z 与运算,因为y是0,++z不会运行了, y&&++z整体是0
2、y用完自加,y变1
3、0||++x ,或运算,上一步整体为0,也就是左边为0,还要看右边,x还要自加
可追问,望采纳