DEC_INFINITY宏
概要:
#include <float.h>
#define DEC_INFINITY value //value值由实现定义。
描述:
如果实现支持十进制浮点类型(即实现定义了宏__STDC_IEC_60559_DFP__。),宏DEC_INFINITY才会被定义。
该宏表示_Decimal32类型的无穷大(∞)。该宏会展开为_Decimal32类型的常量表达式,表示正无穷大。
(注:ISO/IEC 9899:2024标准中,宏DEC_INFINITY在<float.h>头文件及<math.h>头文件中均有定义。根据ISO/IEC 9899:2024标准,使用<math.h>头文件中的宏DEC_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
36
37
38
39
|
/*宏DEC_INFINITY范例*/
#include <float.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
#ifdef __STDC_IEC_60559_DFP__
#ifdef DEC_INFINITY
_Decimal32 value = DEC_INFINITY;
size_t size = sizeof(_Decimal32);
unsigned char arr[size];
memcpy(arr, &value, size);
//验证赋值后value值是否是无穷大。
if(isinf(value) == 0)
{
puts("Warning: DEC_INFINITY does not produce an infinite value!");
}
//_Decimal32类型对象十六进制表示形式。
printf("Hexadecimal representation of DEC_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 DEC_INFINITY.");
#endif
#else
puts("The implementation does not support decimal floating types.");
#endif
return 0;
}
|
输出:
The implementation does not support decimal floating types.
(注:编译时实现还未支持十进制浮点类型。)
相关内容:
主要参考资料:
1、ISO/IEC 9899:2024