union {
__int64 bigint;
struct {
unsigned long low;
long high;
};
} offbytes;
我不确定上面的代码是什么意思?
__int64,无符号长,长均为8个字节。
最佳答案
unsigned long
和long
并不总是8个字节。许多编译器提供4字节long
整数。我敢打赌,您的例子就是这种情况。
在这种情况下,您可以像这样使用联合:
offbytes a;
a.bigint = 0x0123456789abcdef;
printf("%x %x\n", a.high, a.low);
结果是:
1234567 89abcdef
警告:由于大/小端顺序考虑,此代码不可移植。