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
Definiert im Header <math.h>
#define HUGE_VALF /*implementation defined*/
(seit C99)
#define HUGE_VAL  /*implementation defined*/
#define HUGE_VALL /*implementation defined*/
(seit C99)

Die HUGE_VALF -, HUGE_VAL - und HUGE_VALL -Makros erweitern sich zu positiven Gleitkommakonstantenausdrücken, die gleich den Werten sind, die von Gleitkommafunktionen und -operatoren im Falle eines Überlaufs zurückgegeben werden (siehe math_errhandling ).

Konstante Erklärung
HUGE_VALF Erweitert zu einem positiven float Ausdruck, der einen Überlauf anzeigt
HUGE_VAL Erweitert zu einem positiven double Ausdruck, der einen Überlauf anzeigt, nicht notwendigerweise darstellbar als float
HUGE_VALL Erweitert zu einem positiven long double Ausdruck, der einen Überlauf anzeigt, nicht notwendigerweise darstellbar als float oder double

Auf Implementierungen, die Gleitkomma-Unendlichkeiten unterstützen, erweitern sich diese Makros stets auf die positiven Unendlichkeiten von float , double und long double , jeweils.

Beispiel

#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");
}

Mögliche Ausgabe:

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

Referenzen

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

Siehe auch

wertet zu positiver Unendlichkeit aus oder dem Wert, der garantiert einen float überlauf verursacht
(Makrokonstante)
C++-Dokumentation für HUGE_VAL