我在这里阅读这个关于决定字节顺序的问题,第一个答案让我有些困惑。
用于决定大字节序的代码如下:
int is_big_endian(void)
{
union {
uint32_t i;
char c[4];
} bint = {0x01020304};
return bint.c[0] == 1;
}
我的问题是这里的编译器如何决定该十六进制数字数组使用什么类型?因为从技术上讲,它同样适用于 thatuint32_t
或 that char[4]
。
为什么不直接将其存储在 中char[4]
并跳过union
?
这里有一些union
我看不到的优势吗?我知道这被称为类型双关语,但在这里我看不到它的优势。