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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |