Почему следующий синтаксис правильный :
x = y+++y;
Где это означает y++ + y
или y + ++y
, что означает y * 2 + 1
(хотя в этом нет уверенности: очень неоднозначно)
Но этот синтаксис неверен :
x = y+++++y;
Что должно означать y++ + ++y
, что означает y * 2 + 2
Есть ли причина неправильности этого синтаксиса? (Изменить: спасибо за объяснение, почему это недопустимый синтаксис, но я не намерен с этим вопросом.)
( Редактировать: конечно) Я не использую это в реальном коде, просто в интересах парсеров / лексеров; но мне интересно, почему парсеру это не нравится; последний пример даже выглядит менее двусмысленным, чем первый.)
( Edit:
int i = 0;
int j = (i = 3)+++i;
тоже недопустимо, хотя мне это кажется однозначным, (i = 3)
- это значение, то есть (значение +
значение), а затем токен ++i
value.)