如果我将三个无符号字符包装成32位整数,并且最高有效字节溢出,它是否会溢出到32位类型的高8位?它是否仅以模数256减少MSB而不影响32位类型的高8位?
编辑:
Packed using bit shifting on little endian architecture:
unsigned int foo = (msb << 16) | (middle << 8) | lsb;
答案 0 :(得分:1)
因为您的变量是32位类型,恰好包含24位值,所以24位部分的溢出将向上移动到第25位。因此它将表现为正常的32位值。
例如:
uint32_t x = 0xFFFFFF;
printf("x=%08x\n", x); // prints 00FFFFFF
x++;
printf("x=%08x\n", x); // prints 01000000