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

INFINITY宏


概要:
#include <float.h>
#define INFINITY value	//value值由实现定义。

描述:

该宏表示无穷大(∞)。

当且仅当实现支持float类型的无穷大时,该宏才会被定义。该宏会展开为float类型的常量表达式,表示正无穷大或者无符号无穷大。

(注:ISO/IEC 9899:2018及以前标准中,宏INFINITY仅在<math.h>头文件中定义;ISO/IEC 9899:2024标准中,宏INFINITY在<float.h>头文件及<math.h>头文件中均有定义。根据ISO/IEC 9899:2024标准,使用<math.h>头文件中的宏INFINITY是一种过时做法。)


范例:
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 
27 
28 
29 
30 
31 
32 
33 
34 
35 
/*宏INFINITY范例*/

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

int main(void)
{
    #ifdef INFINITY
        float value = INFINITY;
        size_t size = sizeof(float);
        unsigned char arr[size];
        memcpy(arr, &value, size);
        
        //验证赋值后value值是否是无穷大。
        if(isinf(value) == 0)
        {
            puts("Warning: INFINITY does not produce an infinite value!");
        }

        //float类型对象十六进制表示形式。
        printf("Hexadecimal representation of INFINITY: 0X");
        for(size_t i=0; i<size; i++)
        {
            printf("%02X", arr[size-1-i]);
        }
        printf("\n");
    #else
        puts("The implementation does not define macro INFINITY.");
    #endif

    return 0;
}


输出:

Hexadecimal representation of INFINITY: 0X7F800000


相关内容:
NAN 表示非数值的宏。
DEC_INFINITY 表示_Decimal32类型无穷大的宏。


主要参考资料:

1、ISO/IEC 9899:2024

2、ISO/IEC 9899:2018