@unit_911

Почему работает (++i)++, но не работает ++(i++)?

int k, i = 1;
k = ++(i++);


Компилятор сообщает об ошибке:
error: lvalue required as increment operand
Чего не происходит в случае с(++i)++. В чем причина?
  • Вопрос задан
  • 276 просмотров
Решения вопроса 1
15432
@15432
Системный программист ^_^
(i++) возвращает число, константу, если упрощенно. Которую нельзя инкрементить, потому что это не переменная

(++i) же возвращает ссылку на переменную, которую можно инкрементнуть ещё раз.

например, ++(++i) - можно. (i++)++ - нельзя.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
++i - увеличить переменную и вернуть ее. Результат этого выражения - сама переменная, вы можете применить к ней еще какие-нибудь операции, допустимые для переменной. Например, постфиксный инкремент.
i++ - вернуть значение переменной, а потом увеличить ее. Результат этого выражения - не переменная, а ее прошлое значение. С ним нельзя выполнять операции, требующие именно переменной. Например, префиксный инкремент.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы