|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.08.2010, 00:04 | #1 |
Новичок
Джуниор
Регистрация: 10.08.2010
Сообщений: 2
|
Читаю книгу (С++ без страха) и не понимаю разницу в коде
Первый код
Код:
Вот второй код Код:
Последний раз редактировалось Stilet; 13.08.2010 в 08:12. |
11.08.2010, 00:47 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
в первом случае sqrt выполняется 1 раз
double sqrt_n = sqrt(static_cast<double>(n)); во втором - на каждой итерации цикла for (i = 2; i <= sqrt((double) n); i++) {
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
11.08.2010, 00:51 | #3 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
В цикле for перед каждой итерацией происходит проверка условия (того, что между двумя точками с запятой). Соответственно, каждый раз производится вычисление выражения, представляющего это условие - если результат равен true, то выполняется очередная итерация цикла. В первом случае каждый раз происходит только сравнение значения переменной i и значения переменной sqrt_n. Во втором случае перед каждой итерацией сначала происходит вызов функции sqrt с аргументом (double)n т.е. приведенное к типу double значение n; и только после этого происходит сравнение значения, возвращенного этой функцией со значением переменной i. В первом же случае функция была вызвана только один раз перед началом цикла и использовалось уже значение переменной. В результате нет ненужных в данном случае затрат на вызов и выполнение функции, т.к. результат ее работы не меняется.
P.S. Опередили)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
11.08.2010, 23:21 | #4 |
Новичок
Джуниор
Регистрация: 10.08.2010
Сообщений: 2
|
Спасибо. Тему можна закрыть я уже понял.
|
11.08.2010, 23:31 | #5 |
Пользователь
Регистрация: 03.04.2009
Сообщений: 59
|
честно говоря, путаницу в примерах ввело не совсем правильное именование функций и переменных..
|
12.08.2010, 11:39 | #6 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
думаю компилятор оптимизирует ассемблерский код так, что оба эти варианта будут одинаковы
|
12.08.2010, 19:00 | #7 |
Пользователь
Регистрация: 12.08.2010
Сообщений: 14
|
Добрый день! Я тоже читаю эту книгу. Хочу научится программировать на С++. У меня тоже возник вопрос по этой книге, остановился я на рекурсивные функции и теперь не знаю что с этим кодом сделать:
Код:
GCF(300, 500) => GCF(500, 300) => GCF(300, 200) => GCF(200, 100) => GCF = 100 Извините, если не туда написал, я здесь новичок! Помогите решить данный вопрос а то я уже 3 день мучаясь и не как, а пропустить эту тему не хочу потому что считаю что это будет в дальнейшей работе нужно! Последний раз редактировалось Sadist989; 13.08.2010 в 00:28. |
12.08.2010, 19:18 | #8 |
Форумчанин
Регистрация: 24.03.2009
Сообщений: 215
|
Sadist989, сформулируйте, пожалуйста, вопрос поконкретнее.
Что Вам нужно? Чтобы код объяснили? Или чтобы сказали, что получится? Или еще что-то? Конкретика рулез...
wyvern@localhost:~$ sudo emerge --unmerge world
|
13.08.2010, 00:15 | #9 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
Код:
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
Последний раз редактировалось ACE Valery; 13.08.2010 в 00:18. |
13.08.2010, 00:40 | #10 |
Пользователь
Регистрация: 12.08.2010
Сообщений: 14
|
Извините, что так плохо сформулировал вопрос, но девушка ниже уже написала мне ответ и он работает, спасибо вам, а то я один не разобрался бы с этим Очень благодарен А если у меня возникнут еще какие то сложности по этой книге я могу обратиться в этой теме?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объясните разницу | Serjuk | Помощь студентам | 1 | 24.01.2010 14:33 |
Читаю с файла, не знаю как вовремя остановится | primeplus | Общие вопросы C/C++ | 2 | 30.08.2009 23:04 |
Вычислить разницу между датами без учета года | k1r1ch | Общие вопросы Delphi | 10 | 20.08.2009 18:36 |
Можно ли создать гостевую книгу, без PHP? | Лукманов Александр | HTML и CSS | 13 | 05.01.2009 15:39 |
как сохранить всю книгу, только значений без формул? | katlis | Microsoft Office Excel | 5 | 17.12.2008 11:59 |