我一直在想,如果我有这样的功能:
bool Foo::Bar()
{
return A() || B() || C();
}
如果 A() 返回 true,Bar() 会立即返回 true 还是在评估最终值之前仍然计算 B() 和 C() 的结果?
最佳答案
如果 A()
为真,则 B 和 C 都不会被求值。这叫做 operator short-circuiting .
类似地,在诸如A && B && C
的语句中,如果A
为false,则不会评估B 或C。
这不仅仅是一个优化;当 B
或 C
依赖于 A
时,它特别有用。例如,您可以在一条语句中既测试指针指向 指向某物,又在指向的对象上调用方法:
if (my_pointer && my_pointer->some_method() > 9) {
}
关于c++ - 关于 OR ( || ) 运算符和 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991329/