powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / ++i или i++?
25 сообщений из 39, страница 1 из 2
++i или i++?
    #33817308
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник вопрос:
Что предпочтительнее использовать для циклов?
Вроде бы как ++i (исходя из идеи ООП), Но для обычных переменных типа integer возникают сомнения- есть подозрение, что большинство компиляторов работают еще так, как было в С-- сперва ++i, потом все операции, потом i++
...
Рейтинг: 0 / 0
++i или i++?
    #33817329
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denВозник вопрос:
++i (исходя из идеи ООП)
как это связанно?

насколько я помнею ++i и i++ отличается тем когда произойдет инкримент i.
i=1;
2+(i++) = 3
2+i = 4

2+(++i) = 4
2+i = 4

вроде так писали в учебниках или я ошибаюсь?
...
Рейтинг: 0 / 0
++i или i++?
    #33817339
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for (i=0;i<10;++i)
{
что то мне подсказывает что i=0 в этом цыкле небудет
}
_____________________________________
А я хочу Брежнева, чтобы все было по прежнему... "Стволы"
...
Рейтинг: 0 / 0
++i или i++?
    #33817343
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Писали то писали, но проверьте пример
i=1;
i=(++i)+(++i);
cout<<i;

Получим 6, что мне удалось объяснить пережитком из С(тестовые примеры подтверждали, что для ++i не имеет значение приоритет скобок)
...
Рейтинг: 0 / 0
++i или i++?
    #33817347
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denВозник вопрос:
Что предпочтительнее использовать для циклов?
Вроде бы как ++i (исходя из идеи ООП), Но для обычных переменных типа integer возникают сомнения- есть подозрение, что большинство компиляторов работают еще так, как было в С-- сперва ++i, потом все операции, потом i++
Компиляторы компилируют то, что ты на[ш]кодил...
Почитай в книжках про работу циклов, а ООП пока шо не трогай.
...
Рейтинг: 0 / 0
++i или i++?
    #33817355
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нету на работе с++ поэтому не притендую ниначо, просто востановил в пямяти что знал.
...
Рейтинг: 0 / 0
++i или i++?
    #33817368
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня тоже:-)
Но этим примером удалось поставить препода в тупик, хотя курс по ООП на С++ он нам прочитал хороший(во всяком случае, мне так показалось)
...
Рейтинг: 0 / 0
++i или i++?
    #33817382
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denПисали то писали, но проверьте пример
i=1;
i=(++i)+(++i);
cout<<i;

Получим 6, что мне удалось объяснить пережитком из С(тестовые примеры подтверждали, что для ++i не имеет значение приоритет скобок)
А чем цифра 6 не нравится?
Сначала работает первый ++i (i=2), потом второй (++i) (i=3), потом + (3+3=6)
Читай про пре[пост]ин[де]кременты...
...
Рейтинг: 0 / 0
++i или i++?
    #33817383
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denВозник вопрос:
Что предпочтительнее использовать для циклов?
Вроде бы как ++i (исходя из идеи ООП), Но для обычных переменных типа integer возникают сомнения- есть подозрение, что большинство компиляторов работают еще так, как было в С-- сперва ++i, потом все операции, потом i++

Код: plaintext
1.
2.
for (i= 0  ; i<N ; i++) {
...
}
...
Рейтинг: 0 / 0
++i или i++?
    #33817385
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denУ меня тоже:-)
Но этим примером удалось поставить препода в тупик, хотя курс по ООП на С++ он нам прочитал хороший(во всяком случае, мне так показалось)
Показалось.
Препода на мыло.
...
Рейтинг: 0 / 0
++i или i++?
    #33817388
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denУ меня тоже:-)
Но этим примером удалось поставить препода в тупик, хотя курс по ООП на С++ он нам прочитал хороший(во всяком случае, мне так показалось)
...
Рейтинг: 0 / 0
++i или i++?
    #33817390
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А идея скобок для изменения приоритета операции забыта?
Если создать простейший класс(из одной переменной) и переопределить операции инкремента, то работает именно с учетом скобок)
...
Рейтинг: 0 / 0
++i или i++?
    #33817395
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrabas
насколько я помнею ++i и i++ отличается тем когда произойдет инкримент i.

различий несколько ...
1. входные параметры
2. выходной параметр (как по типу, так и по значению)
...
Рейтинг: 0 / 0
++i или i++?
    #33817397
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy deni=1;
i=(++i)+(++i);
cout<<i;
помойму результат считается неопределенным..
...
Рейтинг: 0 / 0
++i или i++?
    #33817400
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denА идея скобок для изменения приоритета операции забыта?
Если создать простейший класс(из одной переменной) и переопределить операции инкремента, то работает именно с учетом скобок)
А циклы тут при чём?
...
Рейтинг: 0 / 0
++i или i++?
    #33817401
Goldminer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denВозник вопрос:
Что предпочтительнее использовать для циклов?
Вроде бы как ++i (исходя из идеи ООП)Нормальный оптимизирующий компилятор, по идее, должен понять, что результат не используется и сгенерировать одинаковый код для обоих случаев. Если оптимизация по каким-либо причинам не работает, то префикс может оказаться эффективнее, т.к. постфикс (строго говоря) должен порождать временное значение.
zloy denсперва ++i, потом все операции, потом i++А вот это уже совсем интересно: что за сначала и потом? У вас что, НЕСКОЛЬКО унарных операций в одном выражении (типа ++i--++)? ;-))))
...
Рейтинг: 0 / 0
++i или i++?
    #33817411
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denА идея скобок для изменения приоритета операции забыта?
Если создать простейший класс(из одной переменной) и переопределить операции инкремента, то работает именно с учетом скобок)

Дезасемблируй и посмотри. Так как переменная одна, то и хранится она в одном месте. Перед тем как произвести сложение, ты ее инкрементируешь еще раз, а потом складываешь, саму с собой. Что-то типа:

[SRC asm]
inc ax ;2
inc ax ;3
add ax, ax ;6
[/SRC]
...
Рейтинг: 0 / 0
++i или i++?
    #33817416
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i++ от ++i отличается не тем "когда произойдет инкремент", а возвращаемым значением. ++i возвращает уже увеличенное значение, а i++ прежнее. Поэтому если в качестве счетчика цикла используется int, то можно не заморачиваться, разницы никакой.

Совет "исходя из идее ООП" использовать ++i основан на том, что эта операция в случае сложных типов и перегруженных операторов возможно будет стоить дешевле чем постфиксный инкремент из-за экономии на создании копии объекта.

Код: plaintext
i=(++i)+(++i);

А тут имеем неопределенное поведение, так писать не надо.
...
Рейтинг: 0 / 0
++i или i++?
    #33817424
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldminerА вот это уже совсем интересно: что за сначала и потом? У вас что, НЕСКОЛЬКО унарных операций в одном выражении (типа ++i--++)? ;-))))

Нет, просто префиксное сложение имеет наивысший приоритет, постфиксное-наинизший
...
Рейтинг: 0 / 0
++i или i++?
    #33817426
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldminerУ вас что, НЕСКОЛЬКО унарных операций в одном выражении (типа ++i--++)? ;-))))

Естесственно, это чисто теоретический вопрос.
...
Рейтинг: 0 / 0
++i или i++?
    #33817430
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldminerА вот это уже совсем интересно: что за сначала и потом? У вас что, НЕСКОЛЬКО унарных операций в одном выражении (типа ++i--++)? ;-))))у постфиксных операций приоритет больше, чем у префиксных. Не забываем классику while(*src)*dst++=*src++;
...
Рейтинг: 0 / 0
++i или i++?
    #33817431
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redskini++ от ++i отличается не тем "когда произойдет инкремент", а возвращаемым значением. ++i возвращает уже увеличенное значение, а i++ прежнее. Поэтому если в качестве счетчика цикла используется int, то можно не заморачиваться, разницы никакой.

Совет "исходя из идее ООП" использовать ++i основан на том, что эта операция в случае сложных типов и перегруженных операторов возможно будет стоить дешевле чем постфиксный инкремент из-за экономии на создании копии объекта.

Код: plaintext
i=(++i)+(++i);

А тут имеем неопределенное поведение, так писать не надо.

Про это я и говорил, у меня возникло ощущение что для int разницы никакой, а для классов она есть(за счет создания временного объекта для постфикса)
...
Рейтинг: 0 / 0
++i или i++?
    #33817456
Goldminer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy den GoldminerА вот это уже совсем интересно: что за сначала и потом? У вас что, НЕСКОЛЬКО унарных операций в одном выражении (типа ++i--++)? ;-))))

Нет, просто префиксное сложение имеет наивысший приоритет, постфиксное-наинизшийВот я и справшиваю, перед ЧЕМ оно имеет приоритет?
...
Рейтинг: 0 / 0
++i или i++?
    #33817463
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.sql.ru/forum/actualthread.aspx?tid=291318
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
++i или i++?
    #33819121
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для цикла - только преинкремент.

Преинкремент - продвинуть (+1) и вернуть.
Постинкремент - создать копию, продвинуть (+1), веруть копию, т.е. лишняя явно операция.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / ++i или i++?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]