union {
    __int64 bigint;
    struct {
        unsigned long low;
        long high;
    };
} offbytes;


我不确定上面的代码是什么意思?

__int64,无符号长,长均为8个字节。

最佳答案

unsigned longlong并不总是8个字节。许多编译器提供4字节long整数。我敢打赌,您的例子就是这种情况。

在这种情况下,您可以像这样使用联合:

offbytes a;
a.bigint = 0x0123456789abcdef;
printf("%x %x\n", a.high, a.low);


结果是:

1234567  89abcdef


警告:由于大/小端顺序考虑,此代码不可移植。

10-05 20:35
查看更多