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