Namespaces
Variants

std::numeric_limits<T>:: quiet_NaN

From cppreference.net
Utilities library
static T quiet_NaN ( ) throw ( ) ;
(bis C++11)
static constexpr T quiet_NaN ( ) noexcept ;
(seit C++11)

Gibt den speziellen Wert "ruhiges Not-a-Number " zurück, wie er durch den Gleitkommatyp T dargestellt wird. Nur aussagekräftig, wenn std:: numeric_limits < T > :: has_quiet_NaN == true . In IEEE 754, der häufigsten binären Darstellung von Gleitkommazahlen, repräsentiert jeder Wert, bei dem alle Bits des Exponenten gesetzt sind und mindestens ein Bit des Mantisse gesetzt ist, ein NaN. Es ist implementierungsdefiniert, welche Werte der Mantisse ruhige oder signalisierende NaNs darstellen und ob das Vorzeichenbit bedeutungsvoll ist.

Inhaltsverzeichnis

Rückgabewert

T std:: numeric_limits < T > :: quiet_NaN ( )
/* nicht spezialisiert */ T ( )
bool false
char 0
signed char 0
unsigned char 0
wchar_t 0
char8_t (seit C++20) 0
char16_t (seit C++11) 0
char32_t (seit C++11) 0
short 0
unsigned short 0
int 0
unsigned int 0
long 0
unsigned long 0
long long (seit C++11) 0
unsigned long long (seit C++11) 0
float implementierungsdefiniert (kann NAN sein)
double implementierungsdefiniert
long double implementierungsdefiniert

Hinweise

Ein NaN (Not a Number) vergleicht sich niemals als gleich mit sich selbst. Das Kopieren eines NaN kann seine Bitdarstellung nicht bewahren.

Beispiel

Mehrere Möglichkeiten, eine NaN zu erzeugen (die Ausgabezeichenkette ist compilerspezifisch):

#include <iostream>
#include <limits>
#include <cmath>
int main()
{
    std::cout << std::numeric_limits<double>::quiet_NaN()     << ' ' // nan
              << std::numeric_limits<double>::signaling_NaN() << ' ' // nan
              << std::acos(2)    << ' '   // nan
              << std::tgamma(-1) << ' '   // nan
              << std::log(-1)    << ' '   // nan
              << std::sqrt(-1)   << ' '   // -nan
              << 0 / 0.0         << '\n'; // -nan
    std::cout << "NaN == NaN? " << std::boolalpha
              << ( std::numeric_limits<double>::quiet_NaN() ==
                   std::numeric_limits<double>::quiet_NaN() ) << '\n';
}

Mögliche Ausgabe:

nan nan nan nan nan -nan -nan
NaN == NaN? false

Siehe auch

identifiziert Gleitkommatypen, die den speziellen Wert "ruhendes Not-a-Number" (NaN) darstellen können
(öffentliche statische Member-Konstante)
gibt einen signalisierenden NaN-Wert des gegebenen Gleitkommatyps zurück
(öffentliche statische Member-Funktion)
(C++11) (C++11) (C++11)
Not-a-Number (NaN)
(Funktion)
(C++11)
prüft, ob die gegebene Zahl NaN ist
(Funktion)