Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2018, 20:17   #11
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Вижу, Вы в теме. Ключевое слово:
Цитата:
Сообщение от p51x Посмотреть сообщение
для итераторов
.
В общем случае - для объектов. Для POD - без разницы.
И я, собственно, выступил против принципа "Запомни, а поймёшь потом.."
Black Fregat вне форума Ответить с цитированием
Старый 10.02.2018, 19:23   #12
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Забавный миф. Смею Вас уверить, что в данном случае компилятор сгенрирует совершенно одинаковый код. Думаю, даже для процессоров от приставок..

Не спорю, есть случаи, когда таки лучше писать ++сount. Но бездумно требовать этого в любой ситуации - всё та же магия, которой полно современное обучение программированию..
Собссно и я так думал, пока не прочел вот это

https://habrahabr.ru/post/348022/

..оказывается, бывают и старые компиляторы все еще.

Последний раз редактировалось alexzk; 10.02.2018 в 19:27.
alexzk вне форума Ответить с цитированием
Старый 10.02.2018, 21:26   #13
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
пока не прочел вот это
Честно говоря, странно.. Было бы лучше увидеть сгенерированный код в обоих случаях.

Поясняю, почему для объектов это существенно. Дело в том, что в большинстве реализаций ++x следует простой логике: модифицирует объект и потом его же возвращает. А вот x++ вынужден создавать временный объект, чтобы "законсервировать" начальное состояние объекта и вернуть его, когда модификации уже произведены. Время создания и разрушения этого объекта могут оказаться существенными..
Black Fregat вне форума Ответить с цитированием
Старый 11.02.2018, 20:50   #14
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Таки вступлюсь за ++x

Лучше привыкнуть всегда писать ++x, чем постоянно думать "x — это объект или примитив? Что же использовать x++ или ++x". Для примитивов x++ эквивалетно ++x, а для сложных объектов ++x лучше. Значит, хуже от использования ++x не станет, а вот лучше стать может. Почему бы не использовать его всегда?
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 11.02.2018, 21:07   #15
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Потому что для этого надо перебороть лень и запомнить, что есть и ++x. Единственный, аргумент, который мне довелось слышать, - ну оно ж работает...
p51x вне форума Ответить с цитированием
Старый 11.02.2018, 23:29   #16
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
Лучше привыкнуть всегда писать ++x
Ага, а завтра вам джуниор очень убедительно расскажет, что x++ использовать вообще нельзя, нигде, он совершенно точно читал об этом на форуме.

Я решительно против бездумного "всегда", особенно в программировании.
За этим начинается магия в стиле "я не знаю, почему работает этот код, но лучше его не трогать"
Black Fregat вне форума Ответить с цитированием
Старый 11.02.2018, 23:49   #17
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Потому что для этого надо перебороть лень и запомнить, что есть и ++x.
А это разве сложно? О_о

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Ага, а завтра вам джуниор очень убедительно расскажет, что x++ использовать вообще нельзя, нигде, он совершенно точно читал об этом на форуме.

Я решительно против бездумного "всегда", особенно в программировании.
За этим начинается магия в стиле "я не знаю, почему работает этот код, но лучше его не трогать"
В случае инкрементов/декрементов, вообще не могу представить, как ограничение вида "всегда использовать префиксный вариант" может помешать.
Я это воспринимаю как что-то уровня coding style, а там важно действовать одинаково, с возможностью нарушения при крайней необходимости.

Лично я стараюсь писать ++x всегда, кроме случаев, когда старое значение зачем-то нужно.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 12.02.2018, 05:25   #18
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Я, кстати, уже 3 года пытаюсь ввести в привычку ++х. И всегда это типа так - написал х++, покурил, "ой блин!", пошел сменил на ++х. А бывает же, и не заметил. Вобщем - наученый автопилот сложно переучить, потому пусть джуны учат сразу, как лучше в большинстве случаев.
alexzk вне форума Ответить с цитированием
Старый 12.02.2018, 08:32   #19
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
А это разве сложно? О_о
Вы не поверите насколько... x++ запоминается легче, т.к. это сокращение для x+1 просто вместо 1 пишем +, а вот ++x это надо запоминать. Я б может и сам не поверил, если б не сталкивался с таким в реальности.
p51x вне форума Ответить с цитированием
Старый 12.02.2018, 11:42   #20
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Любопытно стало старику, дай, думаю, попробую это и в цикле for - работает !
for (i=0; i<4; ++i) j += A[i] ;

Но другую непонятку поймал : вместо
for (i=0; (i<10 && nsov==0); i++)
записал
for (i=0; i<10,nsov==0; i++)
ругается, гад, варнингом Code has no effect, но тем не менее работает, и результаты совпадают. Версия : nsov==0 всегда true, потому и работает одинаково - не прокатывает - если это убрать, результат совсем другой .
Си старый, еще от Борланда.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив A размером 3*3. Составить программу, записывающие положительные элементы этого массива A в одномерный массив B, а отрицательные - в одномерный массив C SkaNi Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2017 08:07
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} Nickolai47 Помощь студентам 5 16.12.2012 14:51
С# задан массив 5х5. сформировать массивы А и В. в массив А поместить элементы с четными индексами, в массив В с нечетны Koksa Помощь студентам 0 10.10.2011 11:26
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) KARTER Помощь студентам 1 18.06.2011 19:58