Почему ++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
Комментариев нет:
Отправить комментарий