Defined in header <math.h> | ||
|---|---|---|
float nanf( const char* arg ); | (1) | (since C99) |
double nan( const char* arg ); | (2) | (since C99) |
long double nanl( const char* arg ); | (3) | (since C99) |
_Decimal32 nand32( const char* arg ); | (4) | (since C23) |
_Decimal64 nand64( const char* arg ); | (5) | (since C23) |
_Decimal128 nand128( const char* arg ); | (6) | (since C23) |
Converts the implementation-defined character string arg into the corresponding quiet NaN value, as if by calling the appropriate parsing function strtoX, as follows:
nan("n-char-sequence"), where n-char-sequence is a sequence of digits, Latin letters, and underscores, is equivalent to the call /*strtoX*/("NAN(n-char-sequence)", (char**)NULL);. nan("") is equivalent to the call /*strtoX*/("NAN()", (char**)NULL);. nan("string"), where string is neither an n-char-sequence nor an empty string, is equivalent to the call /*strtoX*/("NAN", (char**)NULL);. strtof.strtod.strtold.strtod32.strtod64.strtod128.| The functions returning decimal floating point values are declared if and only the implementation predefines | (since C23) |
| arg | - | narrow character string identifying the contents of a NaN |
The quiet NaN value that corresponds to the identifying string arg or zero if the implementation does not support quiet NaNs.
If the implementation supports IEEE floating-point arithmetic (IEC 60559), it also supports quiet NaNs.
This function is not subject to any of the error conditions specified in math_errhandling.
#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);
}Possible output:
nan("1") = nan (7ff8000000000001)
nan("2") = nan (7ff8000000000002)
nan("0xF") = nan (7ff800000000000f)|
(C99) | checks if the given number is NaN (function macro) |
|
(C99) | evaluates to a quiet NaN of type float (macro constant) |
C++ documentation for nanf, nan, nanl |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/nan