|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.02.2018, 20:17 | #11 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
|
10.02.2018, 19:23 | #12 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
https://habrahabr.ru/post/348022/ ..оказывается, бывают и старые компиляторы все еще. Последний раз редактировалось alexzk; 10.02.2018 в 19:27. |
|
10.02.2018, 21:26 | #13 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Честно говоря, странно.. Было бы лучше увидеть сгенерированный код в обоих случаях.
Поясняю, почему для объектов это существенно. Дело в том, что в большинстве реализаций ++x следует простой логике: модифицирует объект и потом его же возвращает. А вот x++ вынужден создавать временный объект, чтобы "законсервировать" начальное состояние объекта и вернуть его, когда модификации уже произведены. Время создания и разрушения этого объекта могут оказаться существенными.. |
11.02.2018, 20:50 | #14 |
Форумчанин
Регистрация: 24.01.2011
Сообщений: 774
|
Таки вступлюсь за ++x
Лучше привыкнуть всегда писать ++x, чем постоянно думать "x — это объект или примитив? Что же использовать x++ или ++x". Для примитивов x++ эквивалетно ++x, а для сложных объектов ++x лучше. Значит, хуже от использования ++x не станет, а вот лучше стать может. Почему бы не использовать его всегда?
a.k.a. Angelicos Phosphoros
Мой сайт |
11.02.2018, 21:07 | #15 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Потому что для этого надо перебороть лень и запомнить, что есть и ++x. Единственный, аргумент, который мне довелось слышать, - ну оно ж работает...
|
11.02.2018, 23:29 | #16 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Ага, а завтра вам джуниор очень убедительно расскажет, что x++ использовать вообще нельзя, нигде, он совершенно точно читал об этом на форуме.
Я решительно против бездумного "всегда", особенно в программировании. За этим начинается магия в стиле "я не знаю, почему работает этот код, но лучше его не трогать" |
11.02.2018, 23:49 | #17 | |
Форумчанин
Регистрация: 24.01.2011
Сообщений: 774
|
А это разве сложно? О_о
Цитата:
Я это воспринимаю как что-то уровня coding style, а там важно действовать одинаково, с возможностью нарушения при крайней необходимости. Лично я стараюсь писать ++x всегда, кроме случаев, когда старое значение зачем-то нужно.
a.k.a. Angelicos Phosphoros
Мой сайт |
|
12.02.2018, 05:25 | #18 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Я, кстати, уже 3 года пытаюсь ввести в привычку ++х. И всегда это типа так - написал х++, покурил, "ой блин!", пошел сменил на ++х. А бывает же, и не заметил. Вобщем - наученый автопилот сложно переучить, потому пусть джуны учат сразу, как лучше в большинстве случаев.
|
12.02.2018, 08:32 | #19 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
|
12.02.2018, 11:42 | #20 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,551
|
Любопытно стало старику, дай, думаю, попробую это и в цикле 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, потому и работает одинаково - не прокатывает - если это убрать, результат совсем другой . Си старый, еще от Борланда. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дан массив 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 |