crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в nan
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 20.2.2013, 9:01
  nikita, кстати да, буквально вчера на неё наткнулся
nikita Дата 18.2.2013, 11:37
  Кстати, во всем известной стандартной библиотеке <math.h> есть встроенная функция isnan(x) которая прекрасно работает!
Алексей1153 Дата 5.2.2013, 19:20
  Litkevich Yuriy, попробовал и так - результат такое же
Litkevich Yuriy Дата 5.2.2013, 18:58
 
Цитата(Алексей1153 @ 5.2.2013, 20:54) *
что это должно быть атрибутом аргумента
нет, это квалификатор переменной, т.е.:

volatile double x;
...
bool y = isNaN(x);

Алексей1153 Дата 5.2.2013, 18:54
  nikita, как сказала Iron Bug, необходимо volatile переменные. Только я их в коде никогда не использовал, но предполагаю, что это должно быть атрибутом аргумента - ведь именно его не нужно оптимизировать. Шаблон не нужен - это всё имеет смысл только для вещественных чисел, а float приведётся к double:

bool isNaN(volatile double a)
{
   return !(a == a);
}



Litkevich Yuriy, ну, выглядит как нагромождение знаков, но там как-то так

    double a;
    bool isNan=!a.operator==(a);



И! Апофигиоз: у меня НЕ работает (MinGW) - см картинку. Под cl не пробовал
Прикрепленное изображение


Litkevich Yuriy Дата 5.2.2013, 17:03
 
Цитата(Алексей1153 @ 4.2.2013, 16:12) *
bool isNan=!(a==a);
я бы в жизни не допёр, что сия запись значит! Подумал бы, что это ересь.
nikita Дата 5.2.2013, 15:57
  Я оформил так :
template<typename P_numType>
inline bool isNaN(P_numType a)
  { return (!(a == a)); }


Вроде все работает как нужно)
Алексей1153 Дата 5.2.2013, 13:43
  думаю, как процедуру оформить можно
Iron Bug Дата 4.2.2013, 18:12
 
Цитата(Алексей1153 @ 4.2.2013, 17:12) *
может, он решит, что isNan всегда == false

теоретически, он может так решить, если переменная не меняется. а если она должна меняться извне - то нужен volatile.
Алексей1153 Дата 4.2.2013, 14:12
  кстати, я не проверял, как оптимизатор обойдётся с кодом вида

double a=...;
bool isNan=!(a==a);


может, он решит, что isNan всегда == false
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 2.5.2024, 13:31