OR 语句执行所有评估

OR Statement performing all evaluations

本文关键字:评估 执行 语句 OR      更新时间:2023-10-16

在OR评估中,C++是否在它找到的第一个TRUE之后继续计算?

即。

if(Foo() || Bar())
{
  //..
}

如果 Foo(( 返回 true,是否会完全跳过 Bar((,或者它也会运行该函数?

运算符 && 和 || 执行所谓的短路评估,这意味着如果在计算第一个操作数后知道结果,他们不会评估第二个操作数。所以不,在这种情况下不会评估Bar()

编辑:正如其他人所说,这是内置功能。如果它们超载,您显然不能再依赖它了。

内置

||运算符短路。 左手表达式保证首先被计算,如果结果true,则不计算右手表达式。

&&运算符则相反。 首先计算左侧表达式,如果计算结果为 false则不计算右侧表达式。


请注意,这不适用于用户定义的operator||operator&&重载。 这些不提供短路评估。 将计算表达式的两边。