nan, nanf, nanl

来自cppreference.com
< c‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本运算
(C99)
(C99)
(C99)
(C99)
(C99)
nannanfnanl
(C99)
(C99)
(C99)
指数函数
(C99)
(C99)
(C99)
(C99)
幂函数
(C99)
(C99)
三角及双曲函数
(C99)
(C99)
(C99)
误差及伽马函数
(C99)
(C99)
(C99)
(C99)
临近整数的浮点运算
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
浮点数操作函数
(C99)
(C99)
(C99)
(C99)
分类
(C99)
(C99)
(C99)
类型
(C99)
(C99)
宏常量
 
定义于头文件 <math.h>
float       nanf( const char* arg );
(C99 起)
double      nan( const char* arg );
(C99 起)
long double nanl( const char* arg );
(C99 起)

转换实现定义的字符串 arg 为对应的安静 NaN 值,分别如同以下列方式调用 strtodstrtofstrtold

调用 nan("n-char-sequence") ,其中 n-char-sequence 是数字、拉丁字母和下划线的序列,等价于调用 strtod("NAN(n-char-sequence)", (char**)NULL);

调用 nan("") 等价于调用 strtod("NAN()", (char**)NULL);

调用 nan("string") ,其中 string 既非 n-char-sequence 亦非空字符串,等价于调用 strtod("NAN", (char**)NULL);

目录

[编辑] 参数

arg - 标识 NaN 内容的窄字符串

[编辑] 返回值

对应标识字符串 arg 的安静 NaN 值,或若实现不支持安静 NaN 则为零。

[编辑] 示例

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

[编辑] 参阅

(C99)
检查给定数是否是NaN
(函数) [编辑]
(C99)
求值得到float类型的安静NaN
(宏常量) [编辑]
nanf, nan, nanlC++ 文档