c++ - "boolean short circuiting"是由标准规定的还是仅用作优化?

标签 c++ c standards-compliance boolean-logic boolean-expression

<分区>

考虑一下

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/

相关文章:

c++ - 将具有默认模板参数的类模板匹配为具有较少参数的模板参数

c++ - 是否有任何快速技术来获取子网中的所有 ip 地址?

java - 我对数据抽象定义的回答

encryption - 世界上哪里需要收银机中的加密软件,在这种情况下需要什么安全措施?

c++ - 指向成员变量和模板

c++ - C++ 库中不使用堆排序

c - 使用 Octave 读取二进制文件

我可以在 C 中使用带有返回值的 if 语句作为函数参数吗?

c - 这种在 C 标准中标记指针的方法是否符合标准?

c++ - Visual C++ 不一致代码的示例?