Namespaces
Variants

nan, nanf, nanl, nand32, nand64, nand128

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
nan nanf nanl nand N
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Definido en el encabezado <math.h>
float nanf ( const char * arg ) ;
(1) (desde C99)
double nan ( const char * arg ) ;
(2) (desde C99)
long double nanl ( const char * arg ) ;
(3) (desde C99)
_Decimal32  nand32 ( const char * arg ) ;
(4) (desde C23)
_Decimal64  nand64 ( const char * arg ) ;
(5) (desde C23)
_Decimal128 nand128 ( const char * arg ) ;
(6) (desde C23)

Convierte la cadena de caracteres definida por la implementación arg en el valor NaN silencioso correspondiente, como si se llamara a la función de análisis apropiada strtoX , de la siguiente manera:

  • La llamada nan ( "n-char-sequence" ) , donde n-char-sequence es una secuencia de dígitos, letras latinas y guiones bajos, es equivalente a la llamada /*strtoX*/ ( "NAN(n-char-sequence)" , ( char ** ) NULL ) ; .
  • La llamada nan ( "" ) es equivalente a la llamada /*strtoX*/ ( "NAN()" , ( char ** ) NULL ) ; .
  • La llamada nan ( "string" ) , donde string no es ni una n-char-sequence ni una cadena vacía, es equivalente a la llamada /*strtoX*/ ( "NAN" , ( char ** ) NULL ) ; .
1) La función de análisis es strtof .
2) La función de análisis es strtod .
3) La función de análisis es strtold .
4) La función de análisis es strtod32 .
5) La función de análisis es strtod64 .
6) La función de análisis es strtod128 .

Las funciones que devuelven valores de punto flotante decimal se declaran si y solo si la implementación predefine __STDC_IEC_60559_DFP__ (es decir, la implementación admite números de punto flotante decimal).

(desde C23)

Contenidos

Parámetros

arg - cadena de caracteres estrecha que identifica el contenido de un NaN

Valor de retorno

El valor NaN silencioso que corresponde a la cadena identificadora arg o cero si la implementación no admite NaN silenciosos.

Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559), también soporta NaNs silenciosos.

Manejo de errores

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

Ejemplo

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

Salida posible:

nan("1")   = nan (7ff8000000000001)
nan("2")   = nan (7ff8000000000002)
nan("0xF") = nan (7ff800000000000f)

Referencias

  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.12.11.2 Las funciones nan (p: 186-187)
  • F.10.8.2 Las funciones nan (p: 386)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.12.11.2 Las funciones nan (p: 256)
  • F.10.8.2 Las funciones nan (p: 529)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.12.11.2 The nan functions (p: 237)
  • F.9.8.2 The fabs functions (p: 465)

Véase también

(C99)
comprueba si el número dado es NaN
(macro de función)
(C99)
se evalúa como un NaN silencioso de tipo float
(constante macro)
Documentación de C++ para nanf , nan , nanl