大多数编程语言都有所谓的逻辑短路设定。
就是说,在条件判断的时候,如果“逻辑或”表达式第一项已经为真,就不会再判断第二项是否真假。
同理,如果“逻辑与”表达式的第一项已经为假,就不会再判断第二项是否真假。
条件判断的逻辑短路,有点像初中物理学的电路短路问题。
如图所示,开关合上的时候,灯炮不会亮。只有开关断开,灯泡才亮。
举个编程的例子:
if(a==5 || b == 5)跟 if(a==5 || (a != 5 && b == 5))
是完全等价的;
后者很啰嗦,因为只有a==5
判定为假,才会继续判断 b==5 的真假,所以这里完全不必再判断一次 a != 5 。
那么问题来了,if(a == 5 || b == 5)
能否写成 if(b==5 || a == 5)呢?
答案是否定的。
Image
Image
如果美国现任总统因为肺炎挂了,那么谁来主持大局呢?
if(a==5 || b==5)
可以理解成现任总统健在(a==5),就由他主持大局;
现任总统挂了(a != 5)才会去看副总统是否健在 (b == 5),然后由副总统主持大局。
也就是说,副总统其实就是个备胎。只要总统健在,副总统哪凉快哪待着去。
所以if(b==5 || a ==5)跟 if(a == 5 || b == 5)
是完全不同的含义。
来源| 杰瑞IC验证(ID:Jerry_IC)
|原创作者| Q哥