【问题标题】:Why does false && (false)?false:true return true为什么 false && (false)?false:true 返回 true
【发布时间】:2013-09-18 05:52:09
【问题描述】:

请不要看情况,因为他们在这里是为了便于理解行为

为什么结果等于真?

boolean result = false && (false)?false:true;

我知道我们可以解决这个问题:

boolean result = false && (false?false:true);

但我只是想知道为什么第一个语法不正确,看起来像“?”运算符的优先级高于 '&&'

【问题讨论】:

    标签: java syntax ternary-operator


    【解决方案1】:

    三元条件 (?:) 的precedence 低于&&。所以

    boolean result = false && (false)?false:true;
    

    (有不必要的括号);相当于

    boolean result = (false && false) ? false : true;
    

    因为(因为false && falsefalse),这简化为

    boolean result = false ? false : true;
    

    当然是true

    【讨论】:

      【解决方案2】:
      1. &&(逻辑与)

      描述:- 比较两个表达式,只有当两者都为真时才返回真。如果一个或两个都为 false,则返回 false。

      以下列表显示了所有可能的组合:

      true && false = false // Evaluates false because the second is false
      false && true = false // Evaluates false because the first is false
      true && true = true // Evaluates true because both are true
      false && false = false// Evaluates false because both are false
      

      语法

      表达式1 && 表达式2

      Cllick here to know more About Logical AND

      1. || (逻辑或)

      描述:- 比较两个表达式,如果一个或两个都为真,则返回真。仅当两个表达式都为 false 时才返回 false。

      以下列表显示了所有可能的组合:

      true || false = true // Evaluates true because the first is true
      false || true = true // Evaluates true because the second is true
      true || true = true // Evaluates true because both are true
      false || false = false // Evaluates false because both are false
      

      语法

      表达式1 ||表达式2

      Click here to know about Logical OR

      【讨论】:

      • 您的第一组示例中似乎出现了复制粘贴错误。我认为应该是:false && false // Evaluates false because neither are true 而不是您重复的第二行。
      【解决方案3】:

      false && (false) 计算结果为false,因此返回三元运算符的最后一个值,即true

      【讨论】:

        【解决方案4】:

        因为

        boolean result = false && (false)?false:true;
        

        被解释为

        boolean result = (false && (false))?false:true;
        

        请参阅:Java operator precedence。在表格中您可以看到&& 的优先级高于? :

        【讨论】:

          【解决方案5】:

          只是一些boolean algegra

          False && false = true
          false && true = false
          true && true = true
          true && false = false
          

          所以在第一种情况下,就像写:

          if (false && false){
          result = false
          } else {
          result = true
          }
          

          在你的第二种情况下,就像写:

          result = false && (false == false);
          

          并且 false == false 返回 true。所以 false && true 返回 false

          【讨论】:

          • 我的问题更多是关于语法而不是布尔代数
          • @Leviathan56 False && false != true
          猜你喜欢
          • 2015-10-03
          • 1970-01-01
          • 2015-02-22
          • 2021-11-10
          • 2017-07-29
          • 1970-01-01
          • 1970-01-01
          • 2015-06-22
          • 2015-06-21
          相关资源
          最近更新 更多