0

我不明白 Accelerated C++ 的以下摘录:

开始于

因为|| 是左结合的,并且由于 ||、== 和 - 的相对优先级,

r == 0 || r == 行 - 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.

我不明白这一点。你怎么会用你自己的话告诉我同样的事情?

4

1 回答 1

5

如果您有一系列要评估的条件,例如“如果 x 为 1 或 y 为 2,则调用函数 foo()”,那么如果您已经知道,则执行第二个测试(y 为 2)是没有意义的x 为 1。 || 运算符的工作方式如下:

i( x == 1 || y == 2 ) {
     foo();
}

如果 x == 1,则不会计算表达式 y == 2,因为它不是必需的。这称为短路评估,如果评估成本高昂,可以节省大量时间。

如果这不是您要问的,请让您的问题更明确。

于 2009-07-19T09:41:12.693 回答