当前位置: C语言 -- 标准库 -- <math.h> -- nanf

nanf函数


概要:
#include <math.h>
float nanf(const char *tagp);

描述:

该函数根据以下规则转换参数tagp指向的字符串:

调用函数nanf("n-char-sequence")等价于调用函数strtof("NAN(n-char-sequence)", (char**)NULL);调用函数nanf("")等价于调用函数strtof("NAN()", (char**)NULL)

如果参数tagp未指向n-char-sequence序列或者空字符串,调用该函数等价于调用函数strtof("NAN", (char**)NULL)


参数:
const char *tagp

参数为一个指向n-char-sequence序列或者空字符串的指针。


返回值:

函数返回一个安静非数值(如果可用),其内容通过参数tagp确定。

如果实现不支持安静非数值,函数返回0


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
/*函数nanf范例*/

#include <inttypes.h>
#include <math.h>
#include <stdio.h>
#include <string.h>

void funcNan(const char *tagp)
{
    float a;
    uint32_t b;
    
    a = nanf(tagp);
    memcpy(&b,&a,sizeof(float));
    printf("nanf(\"%4s\"):%"PRIx32"\n", tagp, b);
}

int main(void)
{
    funcNan("64");
    funcNan("064");
    funcNan("0x64");

    return 0;
}


输出:
nan("  64"):7fc00040
nan(" 064"):7fc00034
nan("0x64"):7fc00064

注:使用ideone编译。

根据IEEE Std 754TM-2008标准第3.4 Binary interchange format encodings节,7fc000407fc000347fc00064表示的均为非数值。详细解释见浮点数的数值范围。


相关内容:
nan double类型的生成安静非数值的函数。
nanl long double类型的生成安静非数值的函数。