isnan
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert im Header
<math.h>
|
||
|
#define isnan(arg) /* implementation defined */
|
(seit C99) | |
Bestimmt, ob die gegebene Gleitkommazahl arg ein Not-a-Number (NaN)-Wert ist. Das Makro gibt einen ganzzahligen Wert zurück.
FLT_EVAL_METHOD wird ignoriert: selbst wenn das Argument mit größerer Reichweite und Genauigkeit als sein Typ ausgewertet wird, wird es zuerst in seinen semantischen Typ konvertiert, und die Klassifizierung basiert darauf (dies ist relevant, wenn der Auswertungstyp NaNs unterstützt, während der semantische Typ dies nicht tut).
Inhaltsverzeichnis |
Parameter
| arg | - | Gleitkommawert |
Rückgabewert
Ein von Null verschiedener ganzzahliger Wert, wenn arg ein NaN ist, 0 andernfalls.
Hinweise
Es gibt viele verschiedene NaN-Werte mit unterschiedlichen Vorzeichenbits und Nutzdaten, siehe nan .
NaN-Werte sind niemals gleich sich selbst oder anderen NaN-Werten. Das Kopieren eines NaN kann sein Bitmuster verändern.
Eine weitere Möglichkeit, um zu testen, ob ein Gleitkommawert NaN ist, besteht darin, ihn mit sich selbst zu vergleichen: bool is_nan ( double x ) { return x ! = x ; }
Beispiel
#include <float.h> #include <math.h> #include <stdio.h> int main(void) { printf("isnan(NAN) = %d\n", isnan(NAN)); printf("isnan(INFINITY) = %d\n", isnan(INFINITY)); printf("isnan(0.0) = %d\n", isnan(0.0)); printf("isnan(DBL_MIN/2.0) = %d\n", isnan(DBL_MIN / 2.0)); printf("isnan(0.0 / 0.0) = %d\n", isnan(0.0 / 0.0)); printf("isnan(Inf - Inf) = %d\n", isnan(INFINITY - INFINITY)); }
Mögliche Ausgabe:
isnan(NAN) = 1 isnan(INFINITY) = 0 isnan(0.0) = 0 isnan(DBL_MIN/2.0) = 0 isnan(0.0 / 0.0) = 1 isnan(Inf - Inf) = 1
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 7.12.3.4 The isnan macro (p: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.12.3.4 Die isnan-Makro (p: TBD)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.12.3.4 The isnan macro (p: 236-237)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.12.3.4 The isnan macro (p: 217)
Siehe auch
|
(C99)
(C99)
(C99)
|
gibt einen NaN-Wert (Not-a-Number) zurück
(Funktion) |
|
(C99)
|
klassifiziert den gegebenen Gleitkommawert
(Funktionsmakro) |
|
(C99)
|
prüft, ob die gegebene Zahl einen endlichen Wert hat
(Funktionsmakro) |
|
(C99)
|
prüft, ob die gegebene Zahl unendlich ist
(Funktionsmakro) |
|
(C99)
|
prüft, ob die gegebene Zahl normalisiert ist
(Funktionsmakro) |
|
(C99)
|
prüft, ob zwei Gleitkommawerte ungeordnet sind
(Funktionsmakro) |
|
C++-Dokumentation
für
isnan
|
|