非常教程

C参考手册

数值 | Numerics

NAN

在头文件<math.h>中定义

#define NAN /*implementation defined*/

(since C99)

NAN扩展为类型的常量表达式,float其值为安静的非数值(QNaN)值。如果实现不支持QNaNs,则不定义此宏常量。

用于打印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 IN(p:518)
  • C99标准(ISO / IEC 9899:1999):
    • 7.12 / 5 NAN(p:213)
    • F.9 / 11/13 IN(p:455)
C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。