命名空间
变体
操作

NAN

来自 cppreference.cn
< c‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本运算
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小值运算
(C99)
(C99)
指数函数
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
幂函数
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角函数和双曲函数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最接近整数的浮点数
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮点数操作
(C99)(C99)
(C99)(C23)
(C99)
窄化操作
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子和量子指数
十进制重编码函数
全序和有效载荷函数
分类
(C99)
(C99)
(C99)
(C23)
误差函数和伽玛函数
(C99)
(C99)
(C99)
(C99)
类型
宏常量
特殊浮点数值
NANDEC_NAN
(C99)(C23)
参数和返回值
错误处理
快速运算指示符
 
定义于头文件 <math.h>
#define NAN /*implementation defined*/
(since C99)

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

用于打印 NaN 的样式是实现定义的。

内容

[编辑] 注解

存在许多不同的 NaN 值,它们通过其有效载荷和符号位来区分。宏 NAN 生成的 NaN 的有效载荷和符号位的内容是实现定义的。

[编辑] 示例

展示用于打印 NaN 的样式和 IEEE 格式。

#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);
}

可能的输出

NAN:   nan 7ff8000000000000

[编辑] 参考文献

  • C23 标准 (ISO/IEC 9899:2024)
  • 7.12/5 NAN (p: TBD)
  • F.10/11/13 NAN (p: TBD)
  • C17 标准 (ISO/IEC 9899:2018)
  • 7.12/5 NAN (p: TBD)
  • F.10/11/13 NAN (p: TBD)
  • 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)

[编辑] 参见

(C99)(C99)(C99)
返回 NaN(非数字)
(函数) [编辑]
(C99)
检查给定数字是否为 NaN
(函数宏) [编辑]
C++ 文档 关于 NAN