加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – “布尔短路”是由标准规定还是主要用作优化?

发布时间:2020-12-16 10:41:55 所属栏目:百科 来源:网络整理
导读:考虑一下 Class* p = NULL;if( p != NULL p-Method() == OK ){ // stuff} 在我使用的所有编译器上,这是非常安全的.即布尔表达式的第一部分将计算为false,因此不会尝试调用Method(),因为评估第二部分是多余的. 这是因为大多数编译器会优化第二部分的评估,还是
考虑一下

Class* p = NULL;
if( p != NULL && p->Method() == OK ){

  // stuff
}

在我使用的所有编译器上,这是非常安全的.即布尔表达式的第一部分将计算为false,因此不会尝试调用Method(),因为评估第二部分是多余的.

这是因为大多数编译器会优化第二部分的评估,还是来自C/C++标准的口述行为?

解决方法

这称为布尔短路,并定义为多种语言. Here是维基百科文章,描述了哪些语言具有此功能.

既然您知道该功能的正确名称,那么它也有other SO articles.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读