结果是什么:
int x = 0x00000001;
int y = 0x80000000;
在大端系统中?
我的目标是定义一个具有第一个(内存中)位集的int,无论它是最重要的还是最不重要的。我知道使用little-endian系统,x会满足这个要求,但在大端系统中它仍然是正确的吗?
我非常确定以下内容适用于两个系统:
char c[4] = {0x80, 0, 0, 0};
int x = (int) c;
这是对的吗?有更优雅的方法吗?
(我没有大端系统可以进行试验)
答案 0 :(得分:1)
你可能想要的是:
int x = 0;
char* p = (char*)&x;
p[0] = 0x01;
上面的代码会将int
变量的最低地址字节中的最低有效位设置为1:
x == 0x10000000
)。x == 0x00000001
)。话虽如此,你对#34;第一位"的定义是什么?恕我直言,这只是最不重要的一个,在这种情况下,int x = 0x00000001
是答案,无论处理器的字节顺序如何!
以下术语可能会帮助您更好地理解:
答案 1 :(得分:1)
你可以尝试工会
union foo
{
char array[8];
int64_t num;
};