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 357 был поднят для решения этой проблемы. LWG обнаружил, что проблема аналогична в C99 (float и long double перегрузки также были добавлены в C99), и C99 ввел новые макросы HUGE_VALF и HUGE_VALL для решения этой проблемы. Поэтому проблема была закрыта, а решение C99 было принято в C++11.
См. также
|
(C++11) | вычисляется как положительная бесконечность или значение, гарантированно переполняющее float (макро-константа) |
Документация C для HUGE_VAL |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/HUGE_VAL