union中,char的元素值是int的低地址元素值,而低地址存储的是int的最高有效字节还是最低有效字节则取决于是大端还是小端。
#include <iostream>
union EndianChecker
{
int number;
char bytes[sizeof(int)];
};
int main()
{
EndianChecker checker;
checker.number = 1;
if (checker.bytes[0] == 1)
{
std::cout << "Little Endian" << std::endl;
}
else
{
std::cout << "Big Endian" << std::endl;
}
return 0;
}