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

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

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

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

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

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

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