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
|
Раскрывается в положительное long double выражение, указывающее на переполнение, не обязательно представимое как float или double |
В реализациях, поддерживающих бесконечности с плавающей точкой, эти макросы всегда раскрываются в положительные бесконечности типов float , double и long double соответственно.
Примечания
В реализациях, которые не поддерживают бесконечности с плавающей точкой, эти макросы раскрываются в максимальное конечное число соответствующих типов.
C++98 добавил float и long double перегрузки математических функций. Существует проблема, что float перегрузки не могут возвращать HUGE_VAL для указания переполнения, поскольку эта макроконстанта не гарантированно представима как float .
LWG issue 357 был поднят для решения этой проблемы. LWG обнаружило, что C99 имеет ту же проблему ( float и long double перегрузки также были добавлены в C99), и C99 ввел новые макросы HUGE_VALF и HUGE_VALL для решения проблемы. Поэтому вопрос был закрыт, и решение из C99 было принято в C++11.
Смотрите также
|
(C++11)
|
вычисляется в положительную бесконечность или значение, гарантированно вызывающее переполнение
float
(макроконстанта) |
|
Документация C
для
HUGE_VAL
|
|