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)
宏常量
 
定义于头文件 <math.h>
float       nanf( const char* arg );
(C99 起)
double      nan( const char* arg );
(C99 起)
long double nanl( const char* arg );
(C99 起)

将实现定义的字符串arg转换到对应的安静NaN值,如同各自通过调用strtofstrtodstrtold,如下:

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

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

调用nan(NULL)等价于调用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++文档