前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >验证工程师经常犯的错误(3)---逻辑短路问题

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

作者头像
IC验证
发布2020-06-30 11:34:57
3890
发布2020-06-30 11:34:57
举报
文章被收录于专栏:杰瑞IC验证

来源| 杰瑞IC验证(ID:Jerry_IC) |原创作者| Q哥

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

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

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

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

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

举个编程的例子:

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)呢?

答案是否定的。

如果美国现任总统因为肺炎挂了,那么谁来主持大局呢?

if(a==5 || b==5)可以理解成现任总统健在(a==5),就由他主持大局;

现任总统挂了(a != 5)才会去看副总统是否健在 (b == 5),然后由副总统主持大局。

也就是说,副总统其实就是个备胎。只要总统健在,副总统哪凉快哪待着去。

所以 if(b==5 || a ==5)跟 if(a == 5 || b == 5)是完全不同的含义。

——The End——

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杰瑞IC验证 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档