Объяснение о выражении Java - PullRequest
6 голосов
/ 11 мая 2010
public static void main(String[] args) {
    int x = 1 + + + + + + + + + 2;
    System.out.println(x);
}

Я могу скомпилировать выше метод. Есть ли объяснение о разрешенном множественном операторе "+"?

Ответы [ 6 ]

11 голосов
/ 11 мая 2010

Это сложение, затем оператор унарный плюс повторяется. Это эквивалентно следующему:

int x = 1 + (+ (+ (+ (+ (+ (+ (+ (+ 2))))))));
3 голосов
/ 11 мая 2010

Причина в том, что + может выступать в качестве унарного оператора , подобно тому, как - может быть оператором отрицания. Вы просто соединяете несколько унарных операторов вместе (с одним последним двоичным сложением).

2 голосов
/ 11 мая 2010

оценивается как 1 + (+ ... (+(+(+2))) ... ) = 1 + 2 = 3

0 голосов
/ 21 августа 2013

Это потому, что хотя синтаксически это может показаться неправильным, использование '+', но есть эта унарная операция, повторяющаяся.

0 голосов
/ 11 мая 2010

вы не получите никаких исключений, все работает нормально. Вы получите вывод 3.

0 голосов
/ 11 мая 2010

Я думаю, что они рассматривали все эти плюсы как один и тот же +. Поскольку вывод равен 3, то здесь нет никакой магии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...