Страницы

Поиск по вопросам

среда, 3 октября 2018 г.

Почему ++i считается lvalue, а i++ rvalue?

Почему ++i считается lvalue, а i++ rvalue? Я нашел ответ на данный вопрос на stackoverflow, но мой ужасный английский не позволяет мне грамотно в этом разобраться. Ведь приоритет префиксного и постфиксного ++ всё равно выше, чем & и по идее в любом случае будет сначала ++, а только потом & или я вообще не так понимаю?


Ответ

Потому что после выполнения выражений:
i = 0; (1) x = ++i; (2) x = i++; В x будут следующие значения: (1) x = 1; i = 1; (2) x = 0; i = 1;
Все эффекты связаны как раз с таким делением.
То есть ++i означает увеличить i на один и взять его для выражения, а i++ означает взять значение i для выражения и после увеличить i на 1

Комментариев нет:

Отправить комментарий