HUGE_VALF, HUGE_VAL, HUGE_VALL
Определён в заголовочном файле <cmath> | ||
|---|---|---|
#define HUGE_VALF /* implementation defined */ | (начиная с C++11) | |
#define HUGE_VAL /* implementation defined */ | ||
#define HUGE_VALL /* implementation defined */ | (начиная с C++11) |
Макросы HUGE_VALF, HUGE_VAL и HUGE_VALL раскрываются в положительные константные выражения с плавающей точкой, которые сравниваются на равенство со значениями, возвращаемыми функциями и операторами с плавающей точкой в случае переполнения (см. math_errhandling).
| Константа | Пояснение |
|---|---|
HUGE_VALF | Раскрывается в положительное выражение типа float, указывающее на переполнение |
HUGE_VAL | Раскрывается в положительное выражение типа double, указывающее на переполнение; оно не обязательно представимо в виде float |
HUGE_VALL | Раскрывается в положительное выражение типа longdouble, указывающее на переполнение; оно не обязательно представимо в виде float или double |
В реализациях, поддерживающих бесконечности с плавающей точкой, эти макросы всегда раскрываются в положительные бесконечности типов float, double и longdouble соответственно.
Примечания
В реализациях, не поддерживающих бесконечности с плавающей точкой, эти макросы раскрываются в наибольшие конечные числа соответствующих типов.
В C++98 были добавлены перегрузки математических функций для типов float и longdouble. Возникла проблема: перегрузки для float не могут возвращать HUGE_VAL для указания на переполнение, поскольку не гарантируется, что этот макрос представим в виде float.
Для решения этой проблемы был поднят вопрос LWG 357. LWG обнаружила, что в C99 существует та же проблема (в C99 также были добавлены перегрузки для типов float и longdouble), и в C99 были введены новые макросы HUGE_VALF и HUGE_VALL для её решения. Поэтому вопрос был закрыт, а решение из C99 было принято в C++11.
См. также
|
(C++11) | вычисляется как положительная бесконечность (если она существует) (макроконстанта) |
Документация по C для HUGE_VAL |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/math/HUGE_VAL