我需要对 32 位整数(确实代表 chars,但无论如何)进行逐位运算。
以下类型的代码安全吗?
uint32_t input;
input = ...;
if(input & 0x03000000) {
output = 0x40000000;
output |= (input & 0xFC000000) >> 2;
我的意思是,在“if”语句中,我正在对左侧的 uint32_t 和右侧进行按位运算……我不知道!
那么你知道硬编码的“0x03000000”的类型和大小(我的意思是它存储了多少字节)吗?
是否有可能某些系统将 0x03000000 视为 int 并因此仅在 2 个字节上对其进行编码,这将是灾难性的吗?