将非整数类型转换为结构

时间:2015-12-14 20:22:10

标签: c pointers casting structure

请考虑以下代码段:

typedef struct 
{
float x;
} str_t;

unsigned char data[4] = {0xFF,0xFF,0xFF,0xFF};
str_t st = *(str_t*)data;

str_t.x中的值等于NaN。 你们中的任何一个人都可以详细说明,为什么这种铸造被认为是未定义的?

假设: float的长度等于4个字节

编辑: 如上所述,NaN不是“C”定义的东西,结果是在GCC + GDB下获得的。 str_t.x的确切结果是相等的(根据Eclipse GDP插件)-nan(0x7fffff)

0 个答案:

没有答案