为什么每次检查字节顺序时都需要将指针而不是变量类型转换为 char?

问题描述 投票:0回答:1

以下是检查计算机系统中字节顺序的代码。

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;
}
c embedded
1个回答
0
投票

请注意,您处理退货的方式有点笨拙。你可以简单地写:

bool is_little_endian()
{
    int a = 0x1;
    char *c = (char *)&a;

    return (*c == a);
}

不同之处在于,第二个总是正确的。第一个函数查看 int 中的

first
字节,并将其提升为
int
以将其与
0x1
进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.