nan, nanf, nanl, nand32, nand64, nand128
| Definiert in Header <math.h> |
||
| float nanf( const char* arg ); |
(1) | (seit C99) |
| double nan( const char* arg ); |
(2) | (seit C99) |
| long double nanl( const char* arg ); |
(3) | (seit C99) |
| _Decimal32 nand32( const char* arg ); |
(4) | (seit C23) |
| _Decimal64 nand64( const char* arg ); |
(5) | (seit C23) |
| _Decimal128 nand128( const char* arg ); |
(6) | (seit C23) |
Konvertiert den implementierungsdefinierten Zeichenstring arg in den entsprechenden stillen NaN-Wert, als ob die entsprechende Parsing-Funktion strtoX aufgerufen würde, wie folgt:
- Der Aufruf nan("n-char-sequence"), wobei n-char-sequence eine Sequenz von Ziffern, lateinischen Buchstaben und Unterstrichen ist, ist äquivalent zum Aufruf /*strtoX*/("NAN(n-char-sequence)", (char**)NULL);.
- Der Aufruf nan("") ist äquivalent zum Aufruf /*strtoX*/("NAN()", (char**)NULL);.
- Der Aufruf nan("string"), wobei string weder eine n-char-sequence noch eine leere Zeichenkette ist, ist äquivalent zum Aufruf /*strtoX*/("NAN", (char**)NULL);.
|
Die Funktionen, die Dezimal-Gleitkommazahlen zurückgeben, werden deklariert, wenn und nur wenn die Implementierung |
(seit C23) |
Inhalt |
[bearbeiten] Parameter
| arg | - | Zeichenkette mit schmalen Zeichen, die den Inhalt eines NaN identifiziert |
[bearbeiten] Rückgabewert
Der stille NaN-Wert, der der identifizierenden Zeichenkette arg entspricht, oder null, wenn die Implementierung keine stillen NaNs unterstützt.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt, unterstützt sie auch stille NaNs.
[bearbeiten] Fehlerbehandlung
Diese Funktion unterliegt keinen der in math_errhandling spezifizierten Fehlerbedingungen.
[bearbeiten] Beispiel
#include <stdio.h> #include <math.h> #include <stdint.h> #include <inttypes.h> #include <string.h> int main(void) { double f1 = nan("1"); uint64_t f1n; memcpy(&f1n, &f1, sizeof f1); printf("nan(\"1\") = %f (%" PRIx64 ")\n", f1, f1n); double f2 = nan("2"); uint64_t f2n; memcpy(&f2n, &f2, sizeof f2); printf("nan(\"2\") = %f (%" PRIx64 ")\n", f2, f2n); double f3 = nan("0xF"); uint64_t f3n; memcpy(&f3n, &f3, sizeof f3); printf("nan(\"0xF\") = %f (%" PRIx64 ")\n", f3, f3n); }
Mögliche Ausgabe
nan("1") = nan (7ff8000000000001)
nan("2") = nan (7ff8000000000002)
nan("0xF") = nan (7ff800000000000f)[bearbeiten] Referenzen
- C17-Standard (ISO/IEC 9899:2018)
- 7.12.11.2 The nan functions (S. 186-187)
- F.10.8.2 The nan functions (S. 386)
- C11-Standard (ISO/IEC 9899:2011)
- 7.12.11.2 The nan functions (S. 256)
- F.10.8.2 The nan functions (S. 529)
- C99-Standard (ISO/IEC 9899:1999)
- 7.12.11.2 The nan functions (S. 237)
- F.9.8.2 The fabs functions (S. 465)
[bearbeiten] Siehe auch
| (C99) |
prüft, ob die gegebene Zahl NaN ist (Funktionsmakro) |
| (C99) |
ergibt eine leise NaN vom Typ float (Makrokonstante) |
| C++ Dokumentation für nanf, nan, nanl
| |