Namespaces
Variants

HUGE_VALF, HUGE_VAL, HUGE_VALL

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
HUGE_VAL HUGE_VALF HUGE_VALL HUGE_VALD N
(C99) (C99) (C23)
Arguments and return values
Error handling
Fast operation indicators
Défini dans l'en-tête <math.h>
#define HUGE_VALF /*défini par l'implémentation*/
(depuis C99)
#define HUGE_VAL  /*défini par l'implémentation*/
#define HUGE_VALL /*défini par l'implémentation*/
(depuis C99)

Les macros HUGE_VALF , HUGE_VAL et HUGE_VALL s'étendent 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 de capacité
HUGE_VAL S'étend à une expression double positive qui indique un dépassement de capacité, pas nécessairement représentable comme float
HUGE_VALL S'étend à une expression long double positive qui indique un dépassement de capacité, 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.

Exemple

#include <math.h>
#include <stdio.h>
int main(void)
{
    const double result = 1.0 / 0.0;
    printf("1.0/0.0 == %f\n", result);
    if (result == HUGE_VAL)
        puts("1.0/0.0 == HUGE_VAL");
}

Sortie possible :

1.0/0.0 == inf
1.0/0.0 == HUGE_VAL

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.12/3 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: TBD)
  • F.10/2 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.12/3 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: TBD)
  • F.10/2 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: TBD)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.12/3 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: 231)
  • F.10/2 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: 517)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.12/3 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: 212)
  • F.9/2 HUGE_VAL, HUGE_VALF, HUGE_VALL (p: 454)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.5 HUGE_VAL

Voir aussi

évalue à l'infini positif ou la valeur garantissant un débordement pour un float
(constante macro)
Documentation C++ pour HUGE_VAL