是否可以在一个long int变量中存储2个32位值?

时间:2011-08-11 14:17:13

标签: c long-integer multiprecision

我想在一个long int变量中存储两个32位值。

如何在使用C的32位操作系统上执行此操作?是否可以将数据存储在一个长long变量中?如果是这样,那怎么办?

3 个答案:

答案 0 :(得分:8)

使用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;

答案 1 :(得分:0)

假设您的平台上有64位长,

int v1 = 123;
int v2 = 456;
long val = v1 << 32 | v2;

答案 2 :(得分:0)

除非sizeof(long int) == 8,否则答案是否定的。如果这种平等是真的,那就用Kevin或者cnicutar的答案。