我想将两个 32 位值存储在一个 long int 变量中。
您将如何在使用 C 的 32 位操作系统上执行此操作?是否可以将数据存储在单个 long long 变量中?如果是这样,那是怎么做的?
我想将两个 32 位值存储在一个 long int 变量中。
您将如何在使用 C 的 32 位操作系统上执行此操作?是否可以将数据存储在单个 long long 变量中?如果是这样,那是怎么做的?
使用 uint64_t 和按位运算符。
uint64_t i64;
uint32_t a32, b32;
// Be carefull when shifting the a32.
// It must be converted to a 64 bit value or you will loose the bits
// during the shift.
i64 = ((uint64_t)a32 << 32) | b32;
假设在您的平台上 long 是 64 位,
int v1 = 123;
int v2 = 456;
long val = v1 << 32 | v2;
除非sizeof(long int) == 8
,答案是否定的。如果该等式成立,则使用 Kevin 或 cnicutar 的答案。