DEC_NAN宏
概要:
#include <float.h>
#define DEC_NAN value //value值由实现定义。
描述:
如果实现支持十进制浮点类型(即实现定义了宏__STDC_IEC_60559_DFP__。),宏DEC_NAN才会被定义。
该宏表示_Decimal32类型的安静非数值(quiet NaN)。该宏会展开为_Decimal32类型的常量表达式,表示安静非数值。
(注:ISO/IEC 9899:2024标准中,宏DEC_NAN在<float.h>头文件及<math.h>头文件中均有定义。根据ISO/IEC 9899:2024标准,使用<math.h>头文件中的宏DEC_NAN是一种过时做法。)
范例:
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_NAN范例*/
#include <float.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
#ifdef __STDC_IEC_60559_DFP__
#ifdef DEC_NAN
_Decimal32 value = DEC_NAN;
size_t size = sizeof(_Decimal32);
unsigned char arr[size];
memcpy(arr, &value, size);
//验证赋值后value值是否是非数值。
if(isnan(value) == 0)
{
puts("Warning: DEC_NAN does not produce a NaN value!");
}
//_Decimal32类型对象十六进制表示形式。
printf("Hexadecimal representation of DEC_NAN: 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_NAN.");
#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