像这样的xyz,怎么看,++,&&,||知道意思,但是输出为什么不一样
这种你理解了就很简单了
A&&B 从左到右 一个一个算,如果A为0, B就不算了。如果A为1继续算B
A||B 从左到右 一个一个算,如果A为1, B就不用了。如果A为0继续算B
例子1
x=y=z=-1
++x&&++y||++z 因为++x=0,所以++y就不用算了, 因为是||,后面++z还要算。最后x=0,y=-1,z=0
例子2
x=y=z=-1
++x&&++y&&++z 因为++x=0,后面都是&& 整个结果已经确认是0,所以后面++y,++z不会算了,最后 x=0,y=-1,z=-1
总结下就是如果整个表达式的结果能确认了,后面的算式都不用算
&& 的优先级比||高一级,都是从左到右判定。
&&左边的值为false时,会直接返回表达式的值为false,不会进行右边的判定。
|| 则会对2边都进行判定。
&&, 如果左边为假,不计算右边;
||,如果左边为真,不计算右边;
++x, 先加1再参与运算;
x++, 先参与运算再加1.
以下代码,
++x && ++y || ++z
等同于
(++x && ++y) || ++z
括号里左边x加一后参与计算,为0,假,故&&右边不计算。括号整体为假,计算||右边。