Spec-Zone.ru › C++

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.

См. также

INFINITY
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API