【问题标题】:How && if loop Expression evaluation?&& if 循环表达式如何求值?
【发布时间】:2015-04-29 05:37:28
【问题描述】:

在评估表达式(x==y && a<b) 时,首先评估布尔表达式x==y,然后评估a<b。是真是假????

请解释其工作原理。我对这个 if 表达式感到很困惑。

【问题讨论】:

  • 是的,尽管 a < b 仅在 x == ytrue 时才被评估。

标签: java if-statement


【解决方案1】:

对于&&(条件与):-

x==y 将首先评估,如果实现,那么它将评估a<b。 as Conditional-从左到右求值。

如果你只使用& operatore :- (And Operator)

在这种情况下,将评估两个条件。不考虑第一个条件(Left Condition)失败或通过。

【讨论】:

    【解决方案2】:

    && 运算符从左到右计算

    如果先计算 x==y,然后再计算 a

    如果您希望在第一个表达式趋于假的情况下评估另一个表达式,我们可以使用 & 喜欢

      (x==y & a<b)
    

    检查以下示例:

     int x=10,y=9,count=0;
        if(x==y && ++count == 0){
            System.out.println("true");
        }
        System.out.println(count);
    

    在这种情况下输出为 0

     int x=10,y=9,count=0;
        if(x==y & ++count == 0){
            System.out.println("true");
        }
        System.out.println(count);
    

    在这种情况下,输出将为 1。仔细检查运算符,我们使用 &

    【讨论】:

      【解决方案3】:

      x==y 被评估,并且只有当它为真时,a&lt;b 才会被评估

      【讨论】:

        【解决方案4】:

        && (作为 AND) 和 || (作为 OR)首先评估左表达式,并且仅在需要时才继续评估第二个表达式。

        例如:

        • False && Anything 将始终返回 False 而不计算 secong 表达式。
        • 正确 ||任何东西都会返回True

        您还可以使用 & 和 |,这两个表达式都求值。 (如果第二个表达式抛出异常,评估将失败。)如果您需要更快、更安全的评估,请使用 && 和 ||。

        【讨论】:

          【解决方案5】:

          &amp;&amp; 将从左到右进行评估。运算符&amp;&amp; 的左表达式首先被求值,如果它执行为假,那么右表达式永远不会被求值,如果左表达式为真,则右表达式被求值。

          【讨论】:

            【解决方案6】:

            &amp;&amp; 从左到右处理。如果第一个参数为假,则忽略其他参数。 当且仅当左侧的所有参数都为真时,它将处理右侧的参数。它被称为short-circuiting

            在您的情况下,如果 x==y 为 false,则不会评估 a&lt;b

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-10-11
              • 1970-01-01
              • 2011-08-03
              • 1970-01-01
              • 1970-01-01
              • 2016-01-01
              • 2016-09-15
              • 1970-01-01
              相关资源
              最近更新 更多