powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / ++i или i++?
14 сообщений из 39, страница 2 из 2
++i или i++?
    #33819183
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikname n> Преинкремент - продвинуть (+1) и вернуть.
n> Постинкремент - создать копию, продвинуть (+1), веруть
n> копию, т.е. лишняя явно операция
какая чушь ... дизассемблирование делал, смотрел ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
++i или i++?
    #33819186
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Субж.
ИМХО одинаково.

Код: plaintext
1.
2.
3.
for(i= 0 ;i< 10 ;i++){
//body
}

разворачивается в:

Код: plaintext
1.
2.
3.
4.
5.
i= 0 ;
while(i< 10 ){
//body
i++;
}


В цикле с while - без разницы, что будет стоять - пре-.. или
пост-.. инкремент.

Другое дело, если итерационное выражение участвует в теле...
...
Рейтинг: 0 / 0
++i или i++?
    #33819227
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСубж.
ИМХО одинаково.


А так ?
Код: plaintext
1.
2.
3.
  for(map_fonts_t::iterator I = m_mapFonts.begin(), IE = m_mapFonts.end(); I != IE; ++I){
. . .
  for(map_fonts_t::iterator I = m_mapFonts.begin(), IE = m_mapFonts.end(); I != IE; I++){

Что там Саттер пишет ?
...
Рейтинг: 0 / 0
++i или i++?
    #33819267
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал эксперимент, for (i=0;i<10;++i) и for (i=0;i<10;i++) в C++Builder 6 дает одинаковый исполняемый код.
...
Рейтинг: 0 / 0
++i или i++?
    #33820143
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карабас Барабас nikname n> Преинкремент - продвинуть (+1) и вернуть.
n> Постинкремент - создать копию, продвинуть (+1), веруть
n> копию, т.е. лишняя явно операция
какая чушь ... дизассемблирование делал, смотрел ?
Posted via ActualForum NNTP Server 1.3
Зачем? Речь же шла о циклах? представь себе, что тебя не int i, а
map<string,MyClass>::iterator i;
Так что привычка использовать преинкремент там, где не требуется постинкремент - не вредная. А в
for(; i != ...; ++i) он явно не требуется.
...
Рейтинг: 0 / 0
++i или i++?
    #33820320
_shumer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то я что-то похожее уже видел =)

Наверное здесь
http://]http://progz.ru/forum/viewtopic.php?t=22502&postdays=0&postorder=asc&start=0
...
Рейтинг: 0 / 0
++i или i++?
    #33820642
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это обсосано в разных С++ FAQ по 100 раз уже.

Лучше писать ++i , если тебе не нужен реально постинкремент (не нужно значение переменной до инкремента как значение выражения).
Это связано только с одной вещью -- если i - это переменная какого-то сложного класса (типа итератора STL например), то использование постинкремента может быть связано с неоправданными накладными расходами. Если i - просто переменная (например, указатель или индекс), то нужно писать ++i просто потому, чтобы не привыкать писать i++ там, где это не нужно, и чтобы если вдруго потом тип переменной i поменяется, не возникало бы нежелательных потерь производительности.

Короче, i++ нужно писать только если вам нужен именно постинкремент, иначе ++i.

А вообще лучше писать С++.

Кстати, вы вообще-то врубаетесь, что работая на С++, вы всегда работаете со старой версией языка ? Надо работать на ++С.
...
Рейтинг: 0 / 0
++i или i++?
    #33822709
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНадо работать на ++С.
это зачет :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
++i или i++?
    #39092334
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Сегодня разбирал пример из стандарта
Код: plaintext
1.
x+++++y;



Не очень понял почему такое выражение
Код: plaintext
1.
++++x;


будет корректным, а вот такое
Код: plaintext
1.
x++++;


нет.
Подскажите пожалуйста
...
Рейтинг: 0 / 0
++i или i++?
    #39092346
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryНе очень понял почему такое выражение
Код: plaintext
1.
++++x;


будет корректным, а вот такое
Код: plaintext
1.
x++++;


нет.
Подскажите пожалуйста++++x это "инкремент, инкремент, вернуть"
Код: plaintext
1.
2.
3.
4.
int a, b;
a = 1;
b = ++ ++a;
// a = 3, b = 3



А x++++ это "вернуть, инкремент, вернуть, инкремент".
Код: plaintext
1.
2.
3.
4.
int a, b;
a = 1;
b = a++ ++;
// a=3, b=1 or 2?


Ну вот чтобы эту неопределенность убрать, просто решили запретить двойной постинкремент.
...
Рейтинг: 0 / 0
++i или i++?
    #39092402
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не укладывается в общую картину. А есть какой-то предел на количество преинкрементов ?
...
Рейтинг: 0 / 0
++i или i++?
    #39092404
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Ну вот чтобы эту неопределенность убрать, просто решили запретить двойной постинкремент.

И это не только в С++ но и в Си ?
...
Рейтинг: 0 / 0
++i или i++?
    #39092502
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrabasfor (i=0;i<10;++i)
{
что то мне подсказывает что i=0 в этом цыкле небудет
}
_____________________________________
))
будет, на первой миграции.
...
Рейтинг: 0 / 0
++i или i++?
    #39092514
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denЧто предпочтительнее использовать для циклов?
Вроде бы как ++i (исходя из идеи ООП),

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


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