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 Раскрывается в положительное выражение типа 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.

См. также

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

Spec-Zone.ru

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