В Java выражение:
n+++n
Появляется, чтобы оценить как эквивалент:
n++ + n
Несмотря на то, что +n
является допустимым унарным оператором с более высоким приоритетом, чем арифметический оператор +
в n + n
. Таким образом, компилятор полагает, что оператор не может быть унарным оператором и разрешать выражение.
Однако выражение:
n++++n
Не компилируется, хотя существует единственная допустимая возможность для его разрешения:
n++ + +n
++n
и +n
указаны как имеющие одинаковый приоритет, поэтому почему компилятор разрешает кажущуюся двусмысленность в n+++n
в пользу арифметики +
, но не делает этого с n++++n
?