20 / 20 / 2
Регистрация: 23.09.2010
Сообщений: 193
|
||||||
1 | ||||||
i++ vs ++i (циклы)11.06.2011, 15:05. Показов 6897. Ответов 46
Метки нет (Все метки)
Собстно стало интересно почему все пишут
0
|
11.06.2011, 15:05 | |
Ответы с готовыми решениями:
46
Заменить в коде циклы for на циклы while Циклы с условием, циклы с переменной, вложенные циклы Циклы. Напечатать числа в виде таблицы, используя только циклы Циклы. Напечатать числа в виде таблицы, используя только циклы |
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|
12.09.2011, 16:14 | 22 |
0
|
Заблокирован
|
|
12.09.2011, 16:18 | 23 |
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|
12.09.2011, 16:23 | 25 |
alkagolik, что должен означать этот пример?
0
|
Заблокирован
|
|
12.09.2011, 16:34 | 26 |
то что во втором цикле декремента на 1 больше чем в первом. Условие выхода в обоих случаях одинаково, просто во втором чикле tmp = 0 не выводится на монитор. так что если в первом цикле имеем 5 декрементов, то во втором 6. Префиксная запись устанавливает наивысший приоритет унарной операции, в то время как постфиксный - низший.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
12.09.2011, 16:40 | 27 |
alkagolik, выдумываешь. Выводятся разные числа, да. Но количество итераций цикла и количество декрементов одинаковое — по 5 в каждом цикле.
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
||||||
12.09.2011, 16:42 | 28 | |||||
А мы это проверим
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
12.09.2011, 17:34 | 30 |
Вообще по идее разница должна быть, поскольку при постинкременте всё равно создаётся временный объект, который в случае цикла тут же и уничтожается. Вот на это создание-уничтожение какое-то время да тратится.
0
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|
12.09.2011, 18:49 | 32 |
видимо gcc и VS 2010 невменяемые
0
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|
12.09.2011, 20:37 | 34 |
да уж выдаёт меньше 1 сотой секунды. хы-хы оптимизация скорости решает конечно.
0
|
14 / 14 / 1
Регистрация: 17.10.2009
Сообщений: 58
|
|
12.09.2011, 20:53 | 35 |
для высоконагруженного вебсервиса совсем неплохо.
я к тому, что все относительно и гыгыкать над тем, что сэкономилась сотая секунды просто глупо.
0
|
12.09.2011, 21:30 | 36 | |||||
Я думаю, что господин OstapBender вовсе не хы-хыкал, потому что результаты следующие:
Код
fasked@k50id:~$ gcc opt.c -oopt fasked@k50id:~$ time ./opt 1073741823 real 0m3.916s user 0m3.900s sys 0m0.000s fasked@k50id:~$ gcc opt.c -oopt -O2 fasked@k50id:~$ time ./opt 1073741823 real 0m0.002s user 0m0.000s sys 0m0.000s fasked@k50id:~$
0
|
14 / 14 / 1
Регистрация: 17.10.2009
Сообщений: 58
|
|
12.09.2011, 21:32 | 37 |
мой косяк. посыпаю голову пеплом
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|
12.09.2011, 23:52 | 38 |
Для встроенных типов нет.
Эмм... поскольку переменная v нигде не используется, то любой вменяемый компилятор при оптимизации должен выкинуть ее нафиг, вместе с циклом.
1
|
13.09.2011, 18:27 | 40 | |||||||||||||||||||||||||
Для префиксной и постфиксной записи "i++", висящей в воздухе (что мы на блюдаем в цикле for) разницы нет никакой.
Когда эта запись используется в выражениях, то разница есть. Причём разница в семантике исполнения, что, формально делает незаконным сравнения по типу того, что сделаны в посте #9 - коды формально неэквивалентны. Но если всё-таки сравнить, то
Поэтому разницы в скорости исполнения по сути дела нет. Разумеется, тут речь не идёт о переопределённых операторах Си++, хотя бы потому, что префиксный и потфиксный операторы могут вообще разные вещи выполнять Добавлено через 32 секунды Да. Любое сравнение на проивзодительность всегда должно проводиться в режиме с оптимизациями
1
|
13.09.2011, 18:27 | |
13.09.2011, 18:27 | |
Помогаю со студенческими работами здесь
40
Переведите исходные циклы в циклы других форматотв: Циклы в Паскале (циклы с пост- и предусловием) Циклы с параметром (циклы ДЛЯ) циклы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |