设,x,y,z,t均为int型变量,则执行一下语句后,t的值为 x=y=z=1; t=++x||++y&&++z; 求详细解答!

如题所述

x=y=z=1; \\执行后x,y,z的值都为1
然后执行++x,以为||符号左边成立(为真)的话就不执行右边的,即(++y&&++z)不执行,所以最后的结果是
x=2
y=1
z=1
t=1 //t记录的只是t=++x||++y&&++z的结果,只能是1或0,以为比较成立(++x为真),所以为1
楼上的不要误导人。追问

就这题来说,那什么时候t=0呢?

追答

++x==0且(++y==0或++z==0)时
这时候t才为0,显然这是不可能的。

追问

这题,什么时候变关系表达式了!

追答

语句t=++x||++y&&++z中的t的值本来就是用来记录结果真假的,1为真,0为假。语句里面的||和&&的比较结果都只能是1或0,你把这结果赋值给t,还不是用来保存语句的真假状态?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-11
x=y=z=1; \\执行后x,y,z的值都为1
t=++x||++y&&++z;
\\如果按优先级加上括号就是(++x) || ( (++y) && (++z) );
\\先算++x,++y,++z 结果表达式将变成 2 || (2 && 2)
\\后面就不用再说了吧 结果一定是
t=1
x=2
y=2
z=2追问

为什么t=1 ++x的赋值 不是应该赋值给t的吗

追答

不是 t后面是赋值运算符 他的优先级是最低的 赋值运算符后面是表达式 结果只能1跟0
结果确实是
x=2
y=1
z=1
t=1
是我说错了 在++x为真的情况下 整个表达式都是真了 也就是1 后面的已经不需要再执行了
我也没想过误导楼主 错了就说错了 干嘛说我误导 我来这里也是想学习的 你说这个有点过了

本回答被网友采纳
相似回答