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)
Definiert im Header <cmath>
#define HUGE_VALF /* implementation defined */
(seit C++11)
#define HUGE_VAL  /* implementation defined */
#define HUGE_VALL /* implementation defined */
(seit C++11)

Die Makros HUGE_VALF , HUGE_VAL und HUGE_VALL 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.

Hinweise

Auf Implementierungen, die keine Gleitkomma-Unendlichkeiten unterstützen, erweitern sich diese Makros auf die maximale endliche Zahl ihrer jeweiligen Typen.

C++98 fügte float - und long double -Überladungen mathematischer Funktionen hinzu. Es besteht das Problem, dass die float -Überladungen nicht HUGE_VAL zurückgeben können, um einen Überlauf anzuzeigen, da dieses Makro nicht garantiert als float darstellbar ist.

LWG issue 357 wurde zur Behandlung dieses Problems eingereicht. LWG stellte fest, dass C99 das gleiche Problem aufweist ( float und long double Überladungen wurden ebenfalls in C99 hinzugefügt), und C99 führte die neuen Makros HUGE_VALF und HUGE_VALL zur Lösung des Problems ein. Daher wurde das Issue geschlossen und die C99-Lösung in C++11 übernommen.

Siehe auch

(C++11)
ergibt positive Unendlichkeit oder den Wert, der garantiert einen float überlaufen lässt
(Makrokonstante)
C-Dokumentation für HUGE_VAL