Я хочу сохранить два 32-битных значения в одной длинной переменной int.
Как бы вы сделали это на 32-битной ОС с использованием C? Можно ли хранить данные в одной длинной длинной переменной? Если да, то как это сделать?
Используйте 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, ответ - нет. Если это равенство истинно, используйте ответ Кевина или cnicutar.
sizeof(long int) == 8
Если на вашей платформе значение long составляет 64 бита,
int v1 = 123; int v2 = 456; long val = v1 << 32 | v2;