我在处理数组时注意到了这个问题。例如:
int32_t array[];
int16_t value = -4000;
当我尝试将值写入int32数组值的顶部和底部时,
array[0] = (value << 16) | value;
编译器在进行位移和按位或操作之前会先将值转换为32位的值。因此,如果16位的-4000被写入顶部和底部,顶部的值将是-1,底部的值将是-4000。
有没有办法将16位的-4000 OR进去,使得两个半部分都是-4000?这不是一个很大的问题。我只是好奇是否可以做到。