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,因为没有必要.这称为短路评估,如果评估费用昂贵,可以节省大量时间.
如果这不是您所询问的问题,请更明确地提出您的问题.