出于鲁棒性原因,我想检查浮点数是IEEE-754 + -Inf还是IEEE-754 Nan.我的代码如下,我想知道它是否正确:
#define PLUS_INFINITE (1.0f/0.0f)
#define MINUS_INFINITE (-1.0f/0.0f)
#define NAN (0.0f/0.0f)
float Local_Var;
/*F is a float numnber.*/
if((unsigned long)(F) == 0x7f800000ul)
{
Local_Var = PLUS_INFINITE;
}
elseif((unsigned long)(F) == 0xff800000ul)
{
Local_Var = MINUS_INFINITE;
}
/*fraction = anything except all 0 bits (since all 0 bits represents infinity).*/
elseif((((unsigned long)(F) & 0x007ffffful) != 0ul )
&&((unsigned long)(F) == 0x7f800000ul))
||
(((unsigned long)(F) & 0x807ffffful) != 0ul )
&&
((unsigned long)(F) == 0xff800000ul))
{
Local_Var = NAN;
} …
Run Code Online (Sandbox Code Playgroud) 我们补充说,double和float数据之间存在差异f
.但是当我试着写:
float Value = 255f;
Run Code Online (Sandbox Code Playgroud)
编译器显示以下错误:
line 50: error (dcc:1633): parse error near 'f'
line 50: error (dcc:1206): syntax error
line 50: fatal error (dcc:1340): can't recover from earlier errors
Run Code Online (Sandbox Code Playgroud)
为什么?
我想通过以下方式定义结构:
typedef struct Info_s
{
uint8 Size;
uint8 Address;
uint8 Pattern[Size];
}Info_t;
Run Code Online (Sandbox Code Playgroud)
您可以注意到数组Pattern的大小是"Size",它在同一结构中首先声明.
那是对的吗?