#cpp #c #qt
Я решил использовать в качестве дефолтного значения параметра функции NAN(так же пробовал std::numeric_limits::quiet_NaN()), но когда попытался проверить его с помощью std::isnan, функция вернула false. В то же время я выводил значение переменной с помощью qDebug() в консоль, где напечаталось значение - nan. Так же пробовал проверить на NAN используя правило нанов, которое голасит, что NAN всегда не равен NAN. Это сработало для неравнества NAN != NAN, но не для x != x. Во втором случае результат был отрицательный. Последней попыткой было определение переменной внутри используемой функции со значением NAN и проверка ее обоими способами на равенство NAN. Результаты те же, false. Совершенно не могу понять в чем может быть дело. Пример: double abc = NAN; qDebug()<< abc << (abc != abc) << std::isnan(abc); Вывод: nan false false UPD: Проверил возможность такого использования NAN на cpp.sh и там все оказалось хорошо. Пока что думаю, что может быть не так с проектом.
Ответы
Ответ 1
Проблему вызывает использование -ffast-math. Я не знал, что мы используем ее в нашем проекте. Для данной проблемы нет решения, если вы используете -ffast-math. Не используйте NAN в паре с быстрой математикой.
Комментариев нет:
Отправить комментарий