# NAN

From cppreference.com
< c‎ | numeric‎ | math

Defined in header ``<math.h>`` |  |
#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, this macro constant is not defined.

The style used to print a NaN is implementation-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 <inttypes.h>
    #include <math.h>
    #include <stdint.h>
    #include <stdio.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

nannanfnanl (C99)(C99)(C99) | returns a NaN (not-a-number) (function)
isnan (C99) | checks if the given number is NaN (function macro)
C++ documentation for NAN

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/NAN&oldid=150797"