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

时间:2009-07-19 09:30:23

标签: c++ logical-operators short-circuiting

我不明白以下摘录来自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.

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

1 个答案:

答案 0 :(得分:5)

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

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

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

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