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