2014-10-20 1 views
3

В каком порядке Java складывает числа a + b + c?
Это a + (b + c) или (a + b) + c?Порядок добавления в Java

Я только что узнал, как работает представление с плавающей запятой, и закончил упражнение, в котором объясняется, что если a, b, c являются float, они могут дать другой результат при добавлении в различные способы, описанные выше.
Это заставило меня задаться вопросом, на каком пути на самом деле это делает Java?

ответ

8

Оператор добавления левый ассоциативный, что означает, что a + b + c оценивается так же, как (a + b) + c.

JLS, Section 15.18, гласит:

Операторов аддитивных имеют одинаковый приоритет и синтаксический левоассоциативные (они группируются слева направо).

3

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 
2

Порядок a + b + c является то, что (a + b) + c (левой ассоциативности).