![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
val |
|
||||||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
Проверил на Visual C++.NET циклом 1 000 000 раз - всегда только "Да". Так что Вы, товарищ, gray_k, в чем-то не совсем точны... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
||||||
|
|||||||
shedon |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
gray_k, прав нельзя сравнивать, на равенство, числа с плавоющей точкой!!! А код
Будет выдавать да не при всех значениях Это сообщение отредактировал(а) shedon - 17.11.2003, 13:42 -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
||||
|
|||||
gray_k |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1015 Регистрация: 9.1.2003 Где: Москва Репутация: нет Всего: 22 |
Просто этот пример очень упрощённый. Поэтому и срабатывает. А в том примере нельзя дать гранитию, что условие выполнится всегда. Это связано с физическим хранением чисел с плавающей точкой в памяти.
Я, например, видел как в одной программе была сделана такая проверка - считалась сумма по выборке из БД, затем пользователю предлагалось ввести эту сумму (из документа) в Edit. После этого поисходило сравнение. Так вот пользователи очень удивлялись, когда на мониторе показывалось сообщение об ошибке, хотя визуально цифры были абсолютно равны. Вот так. ![]() -------------------- С уважением. Gray. |
|||
|
||||
val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
Ладно, уговорили, но всё это как-то странно... Хорошо, буду учитывать в своих программах... Всем спасибо...
-------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
а ксор работает быстрее, чем через третью переменную?
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Медленнее, т.к. кроме операций записи в память присутствует сам XOR -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
maxim1000 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
думаю, это зависит от процессора например, на ассемблере DSP BlackFin можно написать так:
при использовании третьего регистра тоже будет три команды, но довольно часто бывает нужна экономия в регистрах, поэтому такое решение может оказаться полезным теперь C: попробовал: оказалось, что традиционным способом все-таки быстрее... -------------------- qqq |
||||
|
|||||
GanZaleZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 15.7.2003 Репутация: нет Всего: нет |
В XORе больше машинных команд нежели то делать с 3 переменными !
поэтому лучше с 3 переменными , тобш с командой пресваивания ![]() |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
это зависит от процессора и от памяти, в которой хранятся переменные -------------------- qqq |
|||
|
||||
val |
|
||||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
maxim1000 абсолютно прав... На сегодняшний день вычислительный процесс можно организовать таким образом, чтобы выборка из памяти операндов и выполнения некоторых операций над ними проходили за один машинный такт.
В некоторых проектах для хранения переменных, массивов используется SRAM-память, выборка слов из которой происходит за один такт, как из регистров! -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
||||
|
|||||
val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
Да, что-то нас в сферу специализированных вычислительных средств занесло... И все из-за того, что ANSI C - кроссплатформенный стандарт...
-------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
возможно, причиной этому является то, что мы заговорили о быстродействии -------------------- qqq |
|||
|
||||
GanZaleZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 15.7.2003 Репутация: нет Всего: нет |
Ну фощем нужно использофать 3 переменные
![]() Самы оптимальный фариант и код понятен будет даже через 3 года ![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |