Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Macros HUGE_VAL, HUGE_VALF et HUGE_VALL

Entête à inclure

#include <math.h>  // <cmath> en C++

Macros HUGE_VAL, HUGE_VALF et HUGE_VALL

#define HUGE_VAL  /*implementation defined*/
#define HUGE_VALF /*implementation defined*/   (C99)
#define HUGE_VALL /*implementation defined*/   (C99)

Ces macros représentent la plus grande valeur représentable par le type de données flottant considéré (huge, signifiant énorme en anglais). La constante HUGE_VAL et associée au type double, la constante HUGE_VALF et associée au type float, et la constante HUGE_VALL et associée au type long double,

Certaines fonctions mathématiques renvoie une de ces valeurs (en fonction du type considéré) pour indiquer qu'une erreur vient de survenir.

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main() {

    double result = 1.0 / 0.0;
    printf( "1.0 / 0.0 = %lf\n", result );
    
    if ( result == HUGE_VAL ) {
        printf( "La division est impossible.\n" );
    }
    
    return EXIT_SUCCESS;
}

Il est à noter que la librairie mathématique doit être ajoutée durant l'étape de "link" (édition des liens) de votre exécutable. Cela se réalise en ajoutant l'option -lm à votre compilateur GCC. En cas d'utilisation d'un autre compilateur, je vous renvoie vers la documentation de ce dernier.

$> gcc -o sample Sample.c -lm
$> ./sample
1.0 / 0.0 = inf
La division est impossible.
$> 

Sujets connexes

Macro INFINITY
Macro NAN