【问题标题】:&& || operator interaction&& ||操作员交互
【发布时间】:2012-11-29 21:32:33
【问题描述】:

我需要知道如何在语句中评估逻辑 AND 和 OR 运算符。我找到了一些试图解释它的网站,但我无法对它们做出正面或反面。我知道我可以使用大括号来按我想要的方式订购它,但我想了解它是如何工作的。

例如会

if( b1 && b2 || b3 )

被评估为:

(b1 && b2) || b3 

或作为:

b1 && (b2 || b3)

【问题讨论】:

  • 这些东西都有据可查;首先咨询了哪些资源?
  • () 是括号,而不是大括号,它们是 {}

标签: c++ logical-operators operator-precedence


【解决方案1】:

您可以在任何operator precedence table 中找到&& 的优先级高于||,这意味着它被评估为

(b1 && b2) || b3 

请注意,&&|| 都是短路的,这意味着不必评估 b2b3。例如,如果 b1 计算为 false,则根本不会计算 b2。此外,如果 b1 && b2 评估为 true,则不会评估 b3

【讨论】:

  • 短路对于避免评估可能失败的表达式非常有用,例如。 if(x>=0 && myArray[x]...){...}
【解决方案2】:

&&|| 在这方面与 *+ 一样工作。

【讨论】:

    猜你喜欢
    • 2021-01-31
    • 2012-04-30
    • 1970-01-01
    • 2013-12-31
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多