【发布时间】:2019-11-22 12:34:06
【问题描述】:
test1() && test2() != test3();
在此示例中,尽管!= 的优先级高于&&,但评估顺序始终为:如果test1() 然后test2 != test3()。
为什么 c++ && 运算符需要优先级?您能否提供一个运营商显示其隐私但不进行评估的示例?
【问题讨论】:
-
这就是所谓的短路布尔求值。
-
您是在问为什么
&&运算符有短路行为吗? -
你想要这种行为:
if (a != null && a->foo() == 1) -
我询问运算符
&&在表达式中使用其优先级而不是短路行为的示例 -
@Igor 它需要优先级(priority)的概念来定义如何评估表达式。例如,
&&的优先级高于||,因此a||b&&c将被评估为a||(b&&c)。但是,==的优先级高于&&,因此a==b&&c将被评估为(a==b)&&c。因此,无论评估顺序如何,优先级的概念仍然非常重要。
标签: c++