Namespaces
Variants

std::numeric_limits<T>:: quiet_NaN

From cppreference.net
Utilities library
static T quiet_NaN ( ) throw ( ) ;
(до C++11)
static constexpr T quiet_NaN ( ) noexcept ;
(начиная с C++11)

Возвращает специальное значение "тихий не-число ", представленное типом с плавающей точкой T . Имеет смысл только если std:: numeric_limits < T > :: has_quiet_NaN == true . В стандарте IEEE 754, наиболее распространённом двоичном представлении чисел с плавающей точкой, любое значение со всеми установленными битами экспоненты и хотя бы одним установленным битом мантиссы представляет NaN. Определяется реализацией, какие значения мантиссы представляют тихие или сигнальные NaN, и является ли знаковый бит значимым.

Содержание

Возвращаемое значение

T std:: numeric_limits < T > :: quiet_NaN ( )
/* неспециализированный */ T ( )
bool false
char 0
signed char 0
unsigned char 0
wchar_t 0
char8_t (начиная с C++20) 0
char16_t (начиная с C++11) 0
char32_t (начиная с C++11) 0
short 0
unsigned short 0
int 0
unsigned int 0
long 0
unsigned long 0
long long (начиная с C++11) 0
unsigned long long (начиная с C++11) 0
float определяется реализацией (может быть NAN )
double определяется реализацией
long double определяется реализацией

Примечания

NaN никогда не сравнивается равным самому себе. Копирование NaN может не сохранить его битовое представление.

Пример

Несколько способов генерации NaN (выходная строка зависит от компилятора):

#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';
}

Возможный вывод:

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

Смотрите также

идентифицирует типы с плавающей запятой, которые могут представлять специальное значение "тихий не-число" (NaN)
(публичная статическая константа-член)
возвращает сигнальное значение NaN для заданного типа с плавающей запятой
(публичная статическая функция-член)
(C++11) (C++11) (C++11)
не-число (NaN)
(функция)
(C++11)
проверяет, является ли заданное число NaN
(функция)