# NAN

< c‎ | numeric‎ | math

定义于头文件 `<math.h>` |  |
#define NAN /*implementation defined*/ |  | (C99 起)

宏 `NAN` 展开成求值为安静非数（ QNaN ）的 float 类型常量表达式。若实现不支持 QNaN ，则不定义此宏。

用于打印 NaN 的风格是实现定义的。

### 注意

有许多不同的 NaN 值，区别于其载荷与其符号位。宏 `NAN` 所生成的 NaN 的载荷与符号位的内容是实现定义的。

### 示例

显示用于打印 NaN 的风格和 IEEE 格式。

    #include <stdio.h>
    #include <math.h>
    #include <stdint.h>
    #include <inttypes.h>
    #include <string.h>

    int main(void)
    {
        double f = NAN;
        uint64_t fn; memcpy(&fn, &f, sizeof f);
        printf("NAN:   %f %" PRIx64 "\n", f, fn);
    }

可能的输出：

    NAN:   nan 7ff8000000000000

### 引用

- C11 标准（ISO/IEC 9899:2011）：

  - 7.12/5 NAN (p: 232)

  - F.10/11/13 NAN (p: 518)

- C99 标准（ISO/IEC 9899:1999）：

  - 7.12/5 NAN (p: 213)

  - F.9/11/13 NAN (p: 455)

### 参阅

nan nanf nanl (C99)(C99)(C99) | 返回 NaN （非数） (函数)
isnan (C99) | 检查给定数是否为 NaN (宏函数)