nan、nanf、nanl、nand32、nand64、nand128
来自 cppreference.com
在头文件 <math.h> 中定义 |
||
float nanf( const char* arg ); |
(1) | (自 C99) |
double nan( const char* arg ); |
(2) | (自 C99) |
long double nanl( const char* arg ); |
(3) | (自 C99) |
_Decimal32 nand32( const char* arg ); |
(4) | (自 C23) |
_Decimal64 nand64( const char* arg ); |
(5) | (自 C23) |
_Decimal128 nand128( const char* arg ); |
(6) | (自 C23) |
将实现定义的字符字符串 arg
转换为相应的安静 NaN 值,如同通过调用相应的解析函数 strtoX
一样,如下所示
- 调用 nan("n-char-sequence"),其中 n-char-sequence 是数字、拉丁字母和下划线的序列,等效于调用 /*strtoX*/("NAN(n-char-sequence)", (char**)NULL);.
- 调用 nan("") 等效于调用 /*strtoX*/("NAN()", (char**)NULL);.
- 调用 nan("string"),其中 string 既不是 n-char-sequence 也不是空字符串,等效于调用 /*strtoX*/("NAN", (char**)NULL);.
1) 解析函数是 strtof.
2) 解析函数是 strtod.
3) 解析函数是 strtold.
4) 解析函数是 strtod32.
5) 解析函数是 strtod64.
6) 解析函数是 strtod128.
仅当实现预定义 |
(自 C23) |
内容 |
[编辑] 参数
arg | - | 识别 NaN 内容的窄字符字符串 |
[编辑] 返回值
与标识字符串 arg
对应的静默 NaN 值,如果实现不支持静默 NaN,则为零。
如果实现支持 IEEE 浮点运算(IEC 60559),则它也支持静默 NaN。
[编辑] 错误处理
此函数不受 math_errhandling 中指定的任何错误条件的影响。
[编辑] 示例
运行此代码
#include <stdio.h> #include <math.h> #include <stdint.h> #include <inttypes.h> #include <string.h> int main(void) { double f1 = nan("1"); uint64_t f1n; memcpy(&f1n, &f1, sizeof f1); printf("nan(\"1\") = %f (%" PRIx64 ")\n", f1, f1n); double f2 = nan("2"); uint64_t f2n; memcpy(&f2n, &f2, sizeof f2); printf("nan(\"2\") = %f (%" PRIx64 ")\n", f2, f2n); double f3 = nan("0xF"); uint64_t f3n; memcpy(&f3n, &f3, sizeof f3); printf("nan(\"0xF\") = %f (%" PRIx64 ")\n", f3, f3n); }
可能的输出
nan("1") = nan (7ff8000000000001) nan("2") = nan (7ff8000000000002) nan("0xF") = nan (7ff800000000000f)
[编辑] 参考
- C17 标准 (ISO/IEC 9899:2018)
- 7.12.11.2 nan 函数 (p: 186-187)
- F.10.8.2 nan 函数 (p: 386)
- C11 标准 (ISO/IEC 9899:2011)
- 7.12.11.2 nan 函数 (p: 256)
- F.10.8.2 nan 函数 (p: 529)
- C99 标准 (ISO/IEC 9899:1999)
- 7.12.11.2 nan 函数 (p: 237)
- F.9.8.2 fabs 函数 (p: 465)
[编辑] 参见
(C99) |
检查给定数字是否为 NaN (函数宏) |
(C99) |
计算为类型 float 的静默 NaN (宏常量) |
C++ 文档 for nanf, nan, nanl
|