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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ищу ответ на задачу 
:(
    Опции темы
cppGhost
Дата 21.8.2013, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет, недавно столкнулся с примерно такой задачей
Код

float x = 0;
...
bool res = (x == x);

что необходимо вставить вместо ..., чтобы res было равно false. думал переполнить или задать слишком маленькое - не получилось. Раскройте секрет =))

PM MAIL   Вверх
Amp
Дата 21.8.2013, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



nan
PM MAIL   Вверх
cppGhost
Дата 21.8.2013, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вот сейчас смотрю в google и совсем не понимаю, как это тут использовать. все равно спасибо
PM MAIL   Вверх
Amp
Дата 21.8.2013, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если речь о плюсах
Код

...
x = std::numeric_limits<float>::quiet_NaN()
...

PM MAIL   Вверх
cppGhost
Дата 21.8.2013, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо. Хотя у меня все же осталось ощущение, что это как-то слишком уж умно. Ведь для таких задач, решение обычно является общедоступным.
PM MAIL   Вверх
Amp
Дата 21.8.2013, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(cppGhost @  21.8.2013,  17:55 Найти цитируемый пост)
Ведь для таких задач, решение обычно является общедоступным. 

Для C++ std::numeric_limits<T> является стандартным способом получения всяких числовых констант, связанных с указанным в шаблоне типом. Для чистого C, насколько мне известно, стандартного определения NaN в заголовочных файлах нет - зависит от компилятора.
PM MAIL   Вверх
feodorv
Дата 22.8.2013, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Для Microsoft Visual C++ следующий код
Код

#include <stdio.h>
#include <math.h>

int main( void )
{
  float a = 0;
  float b = 0;

  a = a / b;
  printf( "IsNan %s, _isnan %s\n", (a != a) ? "true" : "false", _isnan(a) ? "true" : "false");
  a = sqrt( -1 );
  printf( "IsNan %s, _isnan %s\n", (a != a) ? "true" : "false", _isnan(a) ? "true" : "false");
}


выдаёт такие результаты:
Цитата

IsNan false, _isnan true
IsNan false, _isnan true


и как его заставить работать иначе, не знаю...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
cppGhost
Дата 22.8.2013, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот, точно. Ответ проще
Код

float x = 0.0;
x /= 0;
bool res = (x == x); // res = false;

PM MAIL   Вверх
volatile
Дата 25.8.2013, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(feodorv @  22.8.2013,  00:10 Найти цитируемый пост)
Для Microsoft Visual C++ ... ...  выдаёт такие результаты:
IsNan false, _isnan true
IsNan false, _isnan true

Наверное старая студия?

2008 выдает:
Код

IsNan true, _isnan true
IsNan true, _isnan true

PM MAIL   Вверх
feodorv
Дата 25.8.2013, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(volatile @  25.8.2013,  17:07 Найти цитируемый пост)
Наверное старая студия?

Да, студия старая, я бы даже сказал, устаревшая)))


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
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.0815 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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