NAN
From cppreference.com
| Defined in header <math.h>
|
(deprecated in C23) |
|
| Defined in header <float.h>
|
(since C23) |
|
#define NAN /* implementation-defined */
|
(since C99) | |
The macro NAN expands to a constant expression of type float, which evaluates to a quiet not-a-number (QNaN) value.
If the implementation does not support QNaNs for the type float, this macro is not defined.
Notes
There are many different NaN values, differentiated by their payloads and their sign bits. The contents of the payload and the sign bit of the NaN generated by the macro NAN are implementation-defined.
Example
Show style used to print a NaN and IEEE format.
Run this code
#include <float.h> // since C23
#include <inttypes.h>
#include <math.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
int main(void)
{
const double f = NAN;
uint64_t fn;
memcpy(&fn, &f, sizeof f);
printf("NAN: %f %" PRIx64 "\n", f, fn);
}
Possible output:
NAN: nan 7ff8000000000000
References
- C23 standard (ISO/IEC 9899:2024):
- 7.12/5 NAN (p: TBD)
- F.10/11/13 NAN (p: TBD)
- C17 standard (ISO/IEC 9899:2018):
- 7.12/5 NAN (p: TBD)
- F.10/11/13 NAN (p: TBD)
- C11 standard (ISO/IEC 9899:2011):
- 7.12/5 NAN (p: 232)
- F.10/11/13 NAN (p: 518)
- C99 standard (ISO/IEC 9899:1999):
- 7.12/5 NAN (p: 213)
- F.9/11/13 NAN (p: 455)
See also
(C99)(C99)(C99) |
returns a NaN (not-a-number) (function) |
(C99) |
checks if the given number is NaN (function macro) |
C++ documentation for NAN
| |