<分区>
考虑一下
Class* p = NULL;
if( p != NULL && p->Method() == OK ){
// stuff
}
在我使用过的所有编译器上,这是非常安全的。 IE。 bool 表达式的第一部分将计算为 false,因此不会尝试调用 Method(),因为计算第二部分是多余的。
这是因为大多数编译器会优化第二部分的计算,还是 C/C++ 标准规定的行为?
<分区>
考虑一下
Class* p = NULL;
if( p != NULL && p->Method() == OK ){
// stuff
}
在我使用过的所有编译器上,这是非常安全的。 IE。 bool 表达式的第一部分将计算为 false,因此不会尝试调用 Method(),因为计算第二部分是多余的。
这是因为大多数编译器会优化第二部分的计算,还是 C/C++ 标准规定的行为?
最佳答案
这称为 bool 短路,在许多语言中都有定义。 Here是描述哪些语言具有此功能的维基百科文章。
现在您知道了该特征的正确名称,有 other SO articles关于它。
关于c++ - "boolean short circuiting"是由标准规定的还是仅用作优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/852676/