Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> x++ и lvalue 
V
    Опции темы
nmn
Дата 19.7.2010, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



здравсвтуйте

почему ++x является lvalue, а x++ нет?
PM Skype   Вверх
djamshud
Дата 19.7.2010, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



++x "возвращает себя".


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 19.7.2010, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



поиск поможет smile



--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 19.7.2010, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



префиксный возвращает ссылку, постфиксный - значение.

Я так понимаю FAQ никто не читает smile 
http://forum.vingrad.ru/forum/topic-269794...y1981664/0.html

PM   Вверх
nmn
Дата 19.7.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(azesmcar @  19.7.2010,  13:16 Найти цитируемый пост)
префиксный возвращает ссылку, постфиксный - значение

вот именно это я и спрашиваю, почему? почему сделано так?
PM Skype   Вверх
azesmcar
Дата 19.7.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(nmn @  19.7.2010,  15:03 Найти цитируемый пост)
вот именно это я и спрашиваю, почему? почему сделано так? 

а ты попробуй написать иначе.
PM   Вверх
SenkraD
Дата 19.7.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



azesmcar,  +1 - nmn попробуй по другому выполнить требование стандарта.
Даже если изделаеш как-то, то я бы за такое использование инкрементов/декрементов прибью при первом ревью:
Код
i-- = 45 + bar;
foo(i++ = 56);
Если я ошибся в использование, то покажите как вы хотите и для чего

Это сообщение отредактировал(а) SenkraD - 19.7.2010, 15:49


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
nmn
Дата 19.7.2010, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



хмм, что то все не то

попробуй иначе, стандарт... это все хорошо, вы скажите почему в стандарте ++x есть lvalue, а x++ - нет, какие для этого причины?
PM Skype   Вверх
azesmcar
Дата 19.7.2010, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(nmn @  19.7.2010,  21:12 Найти цитируемый пост)
попробуй иначе, стандарт... это все хорошо, вы скажите почему в стандарте ++x есть lvalue, а x++ - нет, какие для этого причины? 

Я уже ответил, реализуй постфиксный оператор инкремента с возвращением ссылки тогда и поговорим.
PM   Вверх
bsa
Дата 20.7.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(nmn @  19.7.2010,  22:12 Найти цитируемый пост)
попробуй иначе, стандарт... это все хорошо, вы скажите почему в стандарте ++x есть lvalue, а x++ - нет, какие для этого причины?

Ты хоть сам знаешь чем lvalue от rvalue отличается?
PM   Вверх
nmn
Дата 21.7.2010, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



ну предположим знаю, и что?
PM Skype   Вверх
semibug
Дата 24.7.2010, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Действительно, для чего это ограничение? C/C++ всегда были либеральными языками, а тут нельзя и все.
Можно было бы записать:
Код

volatile int x;
x++ = 0;

вместо
Код

volatile int x;
x = 0;
x++;


PM   Вверх
Artemon
Дата 24.7.2010, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 1
Всего: 20



Цитата

volatile int x;
x++ = 0;


x++ это rvalue

Тебеже в голову не приходит написать:
1=25






--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
semibug
Дата 26.7.2010, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Artemon, я и не пишу 1 = 25.
Смысл
Код

volatile int x;
x++ = 0;

в том, что сначала присвоить переменной x ноль, затем увеличить на один.
Опережая вопрос, отвечу в этом не было бы смысла если бы язык не имел ключевого слова volatile.



PM   Вверх
azesmcar
Дата 26.7.2010, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(semibug @  26.7.2010,  11:15 Найти цитируемый пост)
что сначала присвоить переменной x ноль, затем увеличить на один.

это делается вот так
Код

(i = 0)++

а ты делаешь наоборот, и вообще лучше вместо этого извращения сразу сделать
Код

i = 1;


и я уже устал отвечать для чего это ограничение...

Это сообщение отредактировал(а) azesmcar - 26.7.2010, 11:37
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0681 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.