相关疑难解决方法(0)

为什么组合uint8_t的两个班次产生不同的结果?

有人可以解释一下原因:

x = x << 1;
x = x >> 1;
Run Code Online (Sandbox Code Playgroud)

和:

x = (x << 1) >> 1;
Run Code Online (Sandbox Code Playgroud)

在C中产生不同的答案?x是*uint8_t*类型(无符号1字节长整数).例如,当我128 (10000000)在第一种情况下传递它时,它会返回0(正如预期的那样,最重要的位会掉出来)但在第二种情况下它会返回原始的128.这是为什么?我希望这些表达式是等价的吗?

c bit-shift integer-promotion

2
推荐指数
2
解决办法
1678
查看次数

标签 统计

bit-shift ×1

c ×1

integer-promotion ×1