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)