有人可以解释一下原因:
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.这是为什么?我希望这些表达式是等价的吗?