验证工程师经常犯的错误(3)---逻辑短路问题

120 阅读1分钟

大多数编程语言都有所谓的逻辑短路设定。

就是说,在条件判断的时候,如果“逻辑或”表达式第一项已经为真,就不会再判断第二项是否真假。

同理,如果“逻辑与”表达式的第一项已经为假,就不会再判断第二项是否真假。

条件判断的逻辑短路,有点像初中物理学的电路短路问题。

如图所示,开关合上的时候,灯炮不会亮。只有开关断开,灯泡才亮。

Image

举个编程的例子:

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</