nan, nanf, nanl, nand32, nand64, nand128
来自cppreference.com
| 在标头 <math.h> 定义
|
||
| |
(1) | (C99 起) |
| |
(2) | (C99 起) |
| |
(3) | (C99 起) |
| |
(4) | (C23 起) |
| |
(5) | (C23 起) |
| |
(6) | (C23 起) |
转换实现定义的字符串 arg 为对应的安静 NaN 值,分别如同以下列方式调用 strtod、strtof 或 strtold:
- 调用
nan("n-字符序列"),其中 n-字符序列 是数字、拉丁字母和下划线的序列,等价于调用/*strtoX*/("NAN(n-字符序列)", (char**)NULL);。 - 调用
nan("")等价于调用/*strtoX*/("NAN()", (char**)NULL);。 - 调用
nan("字符串"),其中字符串既非 n-字符序列 亦非空字符串,等价于调用/*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 的错误条件。
示例
Run this code
#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 The nan functions (第 186-187 页)
- F.10.8.2 The nan functions (第 386 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.12.11.2 The nan functions (第 256 页)
- F.10.8.2 The nan functions (第 529 页)
- C99 标准(ISO/IEC 9899:1999):
- 7.12.11.2 The nan functions (第 237 页)
- F.9.8.2 The fabs functions (第 465 页)
参阅
(C99) |
检查给定数是否为 NaN (宏函数) |
(C99) |
求值为 float 类型的安静 NaN(如果该值存在) (宏常量) |
nanf, nan, nanl 的 C++ 文档
| |