移位行为

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);

查看所需的行为。