Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обмен значениями между переменными, a<-->b 
:(
    Опции темы
val
Дата 17.11.2003, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



Цитата
НЕльзя сравнивать вещественные числа, поэтому и тождества не будет.


Цитата

double x1=0,1263748;
double x2;
x2=x1;
if(x1 == x2)
ShowMessage("Да");
else
ShowMessage("Нет");


Цитата
Этот код чаще будет выдавать "Нет".


Проверил на Visual C++.NET циклом 1 000 000 раз - всегда только "Да". Так что Вы, товарищ, gray_k, в чем-то не совсем точны...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
shedon
Дата 17.11.2003, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Цитата

Проверил на Visual C++.NET циклом 1 000 000 раз - всегда только "Да". Так что Вы, товарищ, gray_k, в чем-то не совсем точны...

gray_k, прав нельзя сравнивать, на равенство, числа с плавоющей точкой!!!
А код
Цитата

QUOTE 

double x1=0,1263748;
double x2;
x2=x1;
if(x1 == x2)
ShowMessage("Да");
else
ShowMessage("Нет");



Будет выдавать да не при всех значениях

Это сообщение отредактировал(а) shedon - 17.11.2003, 13:42


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
gray_k
Дата 17.11.2003, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: нет
Всего: 22



Просто этот пример очень упрощённый. Поэтому и срабатывает. А в том примере нельзя дать гранитию, что условие выполнится всегда. Это связано с физическим хранением чисел с плавающей точкой в памяти.
Я, например, видел как в одной программе была сделана такая проверка - считалась сумма по выборке из БД, затем пользователю предлагалось ввести эту сумму (из документа) в Edit. После этого поисходило сравнение. Так вот пользователи очень удивлялись, когда на мониторе показывалось сообщение об ошибке, хотя визуально цифры были абсолютно равны.
Вот так.smile.gif


--------------------
С уважением.
Gray.
PM MAIL   Вверх
val
Дата 17.11.2003, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



Ладно, уговорили, но всё это как-то странно... Хорошо, буду учитывать в своих программах... Всем спасибо...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
neutrino
Дата 17.11.2003, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 1
Всего: 62



а ксор работает быстрее, чем через третью переменную?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Ars
Дата 17.11.2003, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

Репутация: 2
Всего: 2



Цитата
а ксор работает быстрее, чем через третью переменную?

Медленнее, т.к. кроме операций записи в память присутствует сам XOR


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
maxim1000
Дата 17.11.2003, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата
а ксор работает быстрее, чем через третью переменную?

думаю, это зависит от процессора
например, на ассемблере DSP BlackFin можно написать так:
Код
r0=r0^r1;
r1=r0^r1;
r0=r0^r1;

при использовании третьего регистра тоже будет три команды, но довольно часто бывает нужна экономия в регистрах, поэтому такое решение может оказаться полезным
теперь C: попробовал: оказалось, что традиционным способом все-таки быстрее...


--------------------
qqq
PM WWW   Вверх
GanZaleZ
Дата 19.11.2003, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 15.7.2003

Репутация: нет
Всего: нет



В XORе больше машинных команд нежели то делать с 3 переменными !
поэтому лучше с 3 переменными , тобш с командой пресваивания smile.gif
PM MAIL   Вверх
maxim1000
Дата 20.11.2003, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата
В XORе больше машинных команд нежели то делать с 3 переменными !
поэтому лучше с 3 переменными , тобш с командой пресваивания

это зависит от процессора и от памяти, в которой хранятся переменные


--------------------
qqq
PM WWW   Вверх
val
Дата 20.11.2003, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



Цитата
это зависит от процессора

maxim1000 абсолютно прав...
На сегодняшний день вычислительный процесс можно организовать таким образом, чтобы выборка из памяти операндов и выполнения некоторых операций над ними проходили за один машинный такт.
Цитата
и от памяти

В некоторых проектах для хранения переменных, массивов используется SRAM-память, выборка слов из которой происходит за один такт, как из регистров!



--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
val
Дата 20.11.2003, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



Да, что-то нас в сферу специализированных вычислительных средств занесло... И все из-за того, что ANSI C - кроссплатформенный стандарт...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
maxim1000
Дата 20.11.2003, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата
Да, что-то нас в сферу специализированных вычислительных средств занесло...

возможно, причиной этому является то, что мы заговорили о быстродействии


--------------------
qqq
PM WWW   Вверх
GanZaleZ
Дата 20.11.2003, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 15.7.2003

Репутация: нет
Всего: нет



Ну фощем нужно использофать 3 переменные smile.gif
Самы оптимальный фариант и код понятен будет даже через 3 года smile.gif ато потом фспоминай че ты там ксорил ксерил и тд .. smile.gif
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0851 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.