c++ - 关于 OR ( || ) 运算符和 return 语句

标签 c++ operators

我一直在想,如果我有这样的功能:

bool Foo::Bar()
{
     return A() || B() || C();
}

如果 A() 返回 true,Bar() 会立即返回 true 还是在评估最终值之前仍然计算 B() 和 C() 的结果?

最佳答案

如果 A() 为真,则 B 和 C 都不会被求值。这叫做 operator short-circuiting .

类似地,在诸如A && B && C 的语句中,如果Afalse,则不会评估B 或C。

这不仅仅是一个优化;当 BC 依赖于 A 时,它特别有用。例如,您可以在一条语句中既测试指针指向 指向某物,又在指向的对象上调用方法:

if (my_pointer && my_pointer->some_method() > 9) {

}

关于c++ - 关于 OR ( || ) 运算符和 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991329/

相关文章:

c++ - 为什么 C++ 编译器不定义 operator== 和 operator!=?

mysql - OR 运算符忽略 AND 运算符 MYSQL

.net - "IsFalse"和 "IsTrue"基本上只是隐式转换为 bool 值吗?

c++ - 需要遍历整个对象,除了前两个元素。有设计模式吗?

c++ - CString 用于静态方法

c++ - 从 Perl 代码调用 C++ 程序

c++ - 模板和 g++ 4.7

unicode - "?"运算符在 Elixir 中做什么?

c++ - c++ 中的字符减法

c++ - 是否可以在运行时选择 C++ 泛型类型参数?