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)
Défini dans l'en-tête <cmath>
#define HUGE_VALF /* implementation defined */
(depuis C++11)
#define HUGE_VAL  /* implementation defined */
#define HUGE_VALL /* implementation defined */
(depuis C++11)

Les macros HUGE_VALF , HUGE_VAL et HUGE_VALL se développent en expressions constantes à virgule flottante positives qui sont égales aux valeurs renvoyées par les fonctions et opérateurs à virgule flottante en cas de dépassement de capacité (voir math_errhandling ).

Constante Explication
HUGE_VALF S'étend à une expression float positive qui indique un dépassement
HUGE_VAL S'étend à une expression double positive qui indique un dépassement, pas nécessairement représentable comme float
HUGE_VALL S'étend à une expression long double positive qui indique un dépassement, pas nécessairement représentable comme float ou double

Sur les implémentations qui prennent en charge les infinis en virgule flottante, ces macros se développent toujours en les infinis positifs de float , double , et long double , respectivement.

Notes

Sur les implémentations qui ne prennent pas en charge les infinis en virgule flottante, ces macros se développent vers le nombre fini maximum de leurs types respectifs.

C++98 a ajouté float et long double les surcharges des fonctions mathématiques. Il existe un problème que les float surcharges ne peuvent pas retourner HUGE_VAL pour indiquer un dépassement de capacité car cette macro n'est pas garantie d'être représentable en tant que float .

LWG issue 357 a été soulevé pour cibler ce problème. LWG a constaté que C99 présente le même problème ( float et long double overloads ont également été ajoutés dans C99), et C99 a introduit de nouvelles macros HUGE_VALF et HUGE_VALL pour résoudre le problème. Par conséquent, le problème a été fermé et la résolution de C99 a été adoptée dans C++11.

Voir aussi

(C++11)
évalue à l'infini positif ou la valeur garantissant le dépassement de capacité d'un float
(constante macro)
Documentation C pour HUGE_VAL