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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> (++i)++, инкременты и декременты 
:(
    Опции темы
Алина
Дата 23.6.2005, 04:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если кто-нибудь может, объясните пожалуйста, как будет работать следующий фрагмент кода:
Код

i=5;
do
{cout<<(++i)++<<endl;
}
while(i<=7);

Выводит два числа: 6, 8

Как будет работать
Код

i=5;
cout<<i++<<" "<<i;


Чем отличаются
++i и i++?

Чему будет равно значение переменной после выполнения этой команды? А если ее использовать в cout<<i++<<" "<<i;?
PM MAIL   Вверх
En_t_end
Дата 23.6.2005, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
Чем отличаются
++i и i++?

++i - унарная операция прибавления еденицы, то есть возвращает i+1.
i++ - то же самое, но возвращает сначала i, затем увеличивает её на 1.
То есть в результате работы этого кода:
Цитата
Код
i=5;
cout<<i++<<" "<<i;

Вот что будет в "консоле: 5 6"

Цитата

i=5;
do
{cout<<(++i)++<<endl;
}
while(i<=7);

Здесь все аналогично, правда присутсвтует приритет скобок, и еси я не ошибаюсь, в первой и последней итерации будет : "консоль: 7"
PM MAIL ICQ Skype GTalk Jabber   Вверх
Ignat
Дата 23.6.2005, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Цитата(En_t_end @ 23.6.2005, 06:18)


Цитата
i=5;
do
{cout<<(++i)++<<endl;
}
while(i<=7);

Здесь все аналогично, правда присутсвтует приритет скобок, и еси я не ошибаюсь, в первой и последней итерации будет : "консоль: 7"



Нет, ответ был указан выше: 6, 8.

Постфиксный инкремент имеет более высокий приоритет, чем префиксный, поэтому поставлены скобки.

Т.е. этот кусок выполнится в две итерации в консоль пойдет 6, НО i=7 после первой итерации. Аналогично будет выполнена вторая итерация.


En_t_end, скажи, что будет результатом строчек smile
Код

int i=5;
cout<<++i--;


Чур, не подсказывать smile


--------------------
Теперь при чем :P
PM   Вверх
Earnest
Дата 23.6.2005, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Цитата(Ignat @ 23.6.2005, 09:58)
Постфиксный инкремент имеет более высокий приоритет, чем префиксный, поэтому поставлены скобки.

Скобки поставлены не только из-за приоритета, а еще и ... тс! ... (велено не подсказывать) smile


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


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Цитата(Earnest @ 23.6.2005, 16:15)

Скобки поставлены не только из-за приоритета, а еще и ... тс!

Я же просил smile


--------------------
Теперь при чем :P
PM   Вверх
Royan
Дата 23.6.2005, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


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

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



За границы вопроса это не выходит, но поясню вот что.

Любой постфиксный инкремент, выполняется посредством префиксного. Это означает, что постфиксный инкремент будет работать ВСЕГДА медленнее.

Это сообщение отредактировал(а) Royan - 24.6.2005, 11:34


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
En_t_end
Дата 23.6.2005, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ignat
А че эта на меня так навалились ? Я как оказалась вобще чел отсталый со всеми своим книженциями: "С++ для чайников" - читаю вот теперь Страуструпа, да protected его m_members.

Это сообщение отредактировал(а) En_t_end - 23.6.2005, 22:09
PM MAIL ICQ Skype GTalk Jabber   Вверх
AISIN
Дата 24.6.2005, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Ignat @ 23.6.2005, 09:58)
Код

int i=5;
cout<<++i--;


Да не че не будет!
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
Ignat
Дата 27.6.2005, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Цитата(AISIN @ 24.6.2005, 20:05)
Да не че не будет!


AISIN
Во-первых, вопрос задан не Вам.
Во-вторых, ответ можно было написать без грамматических ошибок.
В-третьих, что-то всё-таки будет.
В-четвертых, если уж отвечаете, то пояснили бы почему.




--------------------
Теперь при чем :P
PM   Вверх
AISIN
Дата 12.7.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот такая фишка i++ или i-- возвращает константу!
А значит эти операторы невозможно применить несколько раз подряд!
Зато префиксная форма (--i или ++i) возвращаетссылку на переменную!
и вот такая запись будет ++--++i корректна!
P.S. За ошибки извиняюсь! Ну, двойка у меня по русскому языку!
Чё мне теперь застрелиться что ли!
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
LP
Дата 12.7.2005, 12:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(En_t_end @ 23.6.2005, 05:18)
Цитата (Алина @ 23.6.2005, 08:56)
Код
i=5;
cout<<i++<<" "<<i;


Вот что будет в "консоле: 5 6"

Неопределенное поведение. Оператор << не является точкой следования.
  Вверх
pablo
Дата 12.7.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

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



Цитата
В-третьих, что-то всё-таки будет.
В-четвертых, если уж отвечаете, то пояснили бы почему.


ничего кроме ошибки во время компиляции там не будет.


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0902 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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