为什么会纠结这个问题,就像做加减算术一样,我喜欢先把所有的+一起算了,再一个一个-;
或者加的都一起算了,减的也加起来,再在加起来的total里减到这个减的总和。
比如
A+B-C+D-E = (A+B+D)- (C+E)
所以 A && B || C && D = A && B && D || C
那么 true && true || false && false = false
事实上是true
Why?
1.(这才是根本原因)
逻辑运算符结合顺序是从左至右,在||之前得到了true便不再执行||后面的运算了
2.(经测试||前为true时不会去执行||后面)
+,-的优先级是一样的,可以混在一起随便怎么排列
而&&的优先级高于||
所以 A && B || C && D = A && B || (C && D)
第一反应原因就是1,但心有不甘,会不会出现||后面的优先级更高呢?真的就不管不顾了吗?
因为对于||而言,是从左至右,如果||后面的优先级更高那也是||后面的事儿了……
网友评论