请从Accelerated C++中解释以下内容

Del*_*ens 0 c++ short-circuiting logical-operators

我不明白以下摘自Accelerated C++:

开始于

因为|| 是左关联的,并且由于||,==和 - 的相对优先级,

r == 0 || r == rows - 1 || c == 0 || c == cols - 1表示与我们将所有子表达式放在括号中时相同:

((r == 0 || r ==(rows - 1))|| c == 0)|| c ==(cols - 1)

直到

Otherwise, it does something else, which we must now define.
Run Code Online (Sandbox Code Playgroud)

我不明白这一点.你怎么用你自己的话告诉我一样的?

小智 5

如果你想要评估一系列条件,让我们说"如果x是1或y是2,那么调用函数foo()"然后如果你已经知道那么执行第二次测试没有意义(y是2) x是1. || 运算符的工作原理如下

i( x == 1 || y == 2 ) {
     foo();
}
Run Code Online (Sandbox Code Playgroud)

如果x == 1,则不会计算表达式y == 2,因为没有必要.这称为短路评估,如果评估费用昂贵,可以节省大量时间.

如果这不是您所询问的问题,请更明确地提出您的问题.