移位行为
Bit-shift behavior
uint16_t a = 0x00 << 8 + 0xB9;
printf("%d",a);
我期待 185
作为输出,但我得到 0
。
这里发生了什么?
如果您查看 this link,您会发现优先顺序意味着加法在移位之前执行。将您的代码更改为
uint16_t a = (0x00 << 8) + 0xB9;
printf("%d",a);
查看所需的行为。
uint16_t a = 0x00 << 8 + 0xB9;
printf("%d",a);
我期待 185
作为输出,但我得到 0
。
这里发生了什么?
如果您查看 this link,您会发现优先顺序意味着加法在移位之前执行。将您的代码更改为
uint16_t a = (0x00 << 8) + 0xB9;
printf("%d",a);
查看所需的行为。