std::nan, std::nanf, std::nanl - cppreference.com
Espacios de nombres
Variantes

std::nan, std::nanf, std::nanl

De cppreference.com
 
 
 
Funciones matemáticas comunes
Funciones
Operaciones básicas
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Funciones exponenciales
(C++11)
(C++11)
(C++11)
(C++11)
Funciones de potencias
(C++11)
(C++11)
Funciones trigonométricas e hiperbólicas
(C++11)
(C++11)
(C++11)
Funciones de error y gamma
(C++11)
(C++11)
(C++11)
(C++11)
Operaciones de punto flotante del entero más cercano
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Funciones de manipulación de punto flotante
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
Clasificación/comparación
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Constantes de macro
(C++11)(C++11)(C++11)(C++11)(C++11)
 
Definido en el archivo de encabezado <cmath>
float       nanf( const char* arg );
(1) (desde C++11)
double      nan( const char* arg );
(2) (desde C++11)
long double nanl( const char* arg );
(3) (desde C++11)

Convierte la cadena de caracteres arg en el valor NaN simple (quiet) correspondiente, como si llamara a std::strtof, std::strtod o std ::strtold, respectivamente.

1) La llamada std::nanf("secuencia-de-n-caracteres"), donde secuencia-de-n-caracteres es una secuencia de dígitos, letras ASCII y guiones bajos, es equivalente a la llamada std::strtof("NAN(secuencia-de-n-caracteres)", (char**)nullptr);.
La llamada std::nanf("") es equivalente a la llamada std::strtof("NAN()", (char**)nullptr);.
La llamada std::nanf("string"), donde string no es ni una secuencia-de-n-caracteres ni una cadena vacía, es equivalente a la llamada std::strtof("NAN", (char**)nullptr);.
2) Igual que (1), pero llama a std::strtod en lugar de std::strtof.
3) Igual que (1), pero llama a std::strtold en lugar de std::strtof.

Parámetros

arg - Cadena de caracteres angostos que identifican el contenido de un NaN.

Valor de retorno

El valor NaN simple que corresponde a la cadena de identificación arg o cero si la implementación no admite NaN simples.

Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559), también admite NaN simples.

Manejo de errores

Esta función no está sujeta a ninguna de las condiciones de error especificadas en math_errhandling.

Ejemplo

#include <iostream>
#include <cmath>
#include <cstdint>
#include <cstring>

int main()
{
    double f1 = std::nan("1");
    std::uint64_t f1n; std::memcpy(&f1n, &f1, sizeof f1);
    std::cout << "nan(\"1\") = " << f1 << " (" << std::hex << f1n << ")\n";

    double f2 = std::nan("2");
    std::uint64_t f2n; std::memcpy(&f2n, &f2, sizeof f2);
    std::cout << "nan(\"2\") = " << f2 << " (" << std::hex << f2n << ")\n";
}

Posible salida:

nan("1") = nan (7ff0000000000001)
nan("2") = nan (7ff0000000000002)

Véase también