Namespaces
Variants

HUGE_VALF, HUGE_VAL, HUGE_VALL

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
HUGE_VALF HUGE_VAL HUGE_VALL
(C++11) (C++11)
(C++11)
(C++11)
Definido en el encabezado <cmath>
#define HUGE_VALF /* implementation defined */
(desde C++11)
#define HUGE_VAL  /* implementation defined */
#define HUGE_VALL /* implementation defined */
(desde C++11)

Las macros HUGE_VALF , HUGE_VAL y HUGE_VALL se expanden a expresiones constantes de punto flotante positivas que comparan igual a los valores devueltos por funciones y operadores de punto flotante en caso de desbordamiento (consulte math_errhandling ).

Constante Explicación
HUGE_VALF Se expande a una expresión float positiva que indica desbordamiento
HUGE_VAL Se expande a una expresión double positiva que indica desbordamiento, no necesariamente representable como float
HUGE_VALL Se expande a una expresión long double positiva que indica desbordamiento, no necesariamente representable como float o double

En implementaciones que admiten infinitos de punto flotante, estas macros siempre se expanden a los infinitos positivos de float , double , y long double , respectivamente.

Notas

En implementaciones que no admiten infinitos de punto flotante, estas macros se expanden al número finito máximo de sus respectivos tipos.

C++98 añadió float y long double sobrecargas de funciones matemáticas. Existe un problema en que las float sobrecargas no pueden retornar HUGE_VAL para indicar desbordamiento porque esta macro no está garantizada que sea representable como un float .

LWG issue 357 se planteó para abordar este problema. LWG encontró que C99 tiene el mismo problema ( float y long double overloads también fueron añadidos en C99), y C99 introdujo nuevas macros HUGE_VALF y HUGE_VALL para resolver el problema. Por lo tanto, el issue fue cerrado y la resolución de C99 fue adoptada en C++11.

Véase también

(C++11)
evalúa a infinito positivo o el valor garantizado para desbordar un float
(constante macro)
Documentación C para HUGE_VAL