Namensräume
Varianten
Aktionen

isnan

Von cppreference.com
< c‎ | numerik‎ | math
 
 
 
Allgemeine mathematische Funktionen
Funktionen
Grundlegende Operationen
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
Maximum/Minimum-Operationen
(C99)
(C99)
Exponentialfunktionen
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
Potenzfunktionen
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
Trigonometrische und hyperbolische Funktionen
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
Nächste ganze Gleitkommazahlen
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
Gleitkomma-Manipulation
(C99)(C99)
(C99)(C23)
(C99)
Verengende Operationen
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quanten- und Quantenexponent-Funktionen
Dezimal-Neu-Kodierungsfunktionen
Gesamtordnung und Payload-Funktionen
Klassifizierung
(C99)
isnan
(C99)
(C99)
(C23)
Fehler- und Gammafunktionen
(C99)
(C99)
(C99)
(C99)
Typen
Makrokonstanten
Spezielle Gleitkommawerte
(C99)(C23)
Argumente und Rückgabewerte
Fehlerbehandlung
Schnelle Operationsanzeigen
 
Definiert in 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 mehr Reichweite und Präzision als sein Typ ausgewertet wird, wird es zuerst in seinen semantischen Typ konvertiert, und die Klassifizierung basiert auf diesem (dies ist wichtig, wenn der Auswertungstyp NaNs unterstützt, während der semantische Typ dies nicht tut).

Inhalt

[bearbeiten] Parameter

arg - Gleitkommawert

[bearbeiten] Rückgabewert

Ein nicht-null ganzzahliger Wert, wenn arg ein NaN ist, 0 sonst.

[bearbeiten] Hinweise

Es gibt viele verschiedene NaN-Werte mit unterschiedlichen Vorzeichenbits und Payloads, siehe nan.

NaN-Werte sind nie gleich sich selbst oder anderen NaN-Werten. Das Kopieren eines NaN kann sein Bitmuster ändern.

Ein anderer Weg, um zu testen, ob ein Gleitkommawert NaN ist, ist, ihn mit sich selbst zu vergleichen: bool is_nan(double x) { return x != x; }

[bearbeiten] 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

[bearbeiten] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.12.3.4 Das isnan-Makro (S: TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.12.3.4 Das isnan-Makro (S: TBD)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.12.3.4 Das isnan-Makro (S: 236-237)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.12.3.4 Das isnan-Makro (S: 217)

[bearbeiten] Siehe auch

(C99)(C99)(C99)
gibt eine NaN (Not-a-Number) zurück
(Funktion) [bearbeiten]
klassifiziert den gegebenen Gleitkommawert
(Funktionsmakro) [bearbeiten]
prüft, ob die gegebene Zahl endlich ist
(Funktionsmakro) [bearbeiten]
(C99)
prüft, ob die gegebene Zahl unendlich ist
(Funktionsmakro) [bearbeiten]
prüft, ob die gegebene Zahl normal ist
(Funktionsmakro) [bearbeiten]
prüft, ob zwei Gleitkommawerte ungeordnet sind
(Funktionsmakro) [bearbeiten]