【问题标题】:Order of addition in JavaJava中的加法顺序
【发布时间】:2014-10-20 20:57:47
【问题描述】:

Java 将数字 a + b + c 相加的顺序是什么?
a + (b + c) 还是(a + b) + c

我刚刚了解了浮点表示的工作原理并完成了一个练习,该练习解释了如果 a, b, cfloats,那么当以我上面写的不同方式相加时,它们可能会产生不同的结果。
这让我想知道 Java 究竟是用哪种方式实现的?

【问题讨论】:

    标签: java floating-point addition


    【解决方案1】:

    加法运算符是左结合的,这意味着a + b + c 的计算结果与(a + b) + c 相同。

    JLS, Section 15.18,声明:

    加法运算符具有相同的优先级,并且在语法上是左结合的(它们从左到右分组)。

    【讨论】:

      【解决方案2】:

      Left to right (jls-15.18) 除非您添加括号来更改评估顺序。

      static int a() {
          System.out.println("a");
          return 1;
      }
      
      static int b() {
          System.out.println("b");
          return 1;
      }
      
      public static void main(String[] args) {
          System.out.println(a() + b());
      }
      

      输出是

      a
      b
      2
      

      【讨论】:

        【解决方案3】:

        a + b + c 的顺序是(a + b) + c 的顺序(左结合性)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-06
          • 2021-05-16
          • 2011-01-13
          • 2012-09-23
          • 1970-01-01
          • 2022-06-29
          相关资源
          最近更新 更多