首页 > 解决方案 > 位移行为

问题描述

uint16_t a = 0x00 << 8 + 0xB9;
printf("%d",a);

我期待185作为输出,但我得到0.

这里发生了什么?

标签: c++bit-shift

解决方案


如果您查看链接,您会看到优先顺序意味着添加是在班次之前执行的。将您的代码更改为

uint16_t a = (0x00 << 8) + 0xB9;
printf("%d",a);

查看所需的行为。


推荐阅读