以下是检查计算机系统中字节顺序的代码。
bool is_little_endian()
{
int a = 0x1;
char *c = (char *)&a;
if(*c == a)
{
return true;
}
return false;
}
但是我们可以对变量执行相同的操作,并将
int
转换为 char
,如下所示。下面的代码有问题吗?
bool is_little_endian()
{
int a = 0x1;
char c = a;
if(c == a)
{
return true;
}
return false;
}
请注意,您处理退货的方式有点笨拙。你可以简单地写:
bool is_little_endian()
{
int a = 0x1;
char *c = (char *)&a;
return (*c == a);
}
不同之处在于,第二个总是正确的。第一个函数查看 int
中的
first字节,并将其提升为
int
以将其与 0x1
进行比较。