Bal*_*sar 4 c operator-precedence
C中的位移操作符没有按照我的预期运行,这无疑是我的误解,但有人可以解释发生了什么吗?
unsigned char in = 155;
unsigned char res;
res = (in << 6) >> 7;
Run Code Online (Sandbox Code Playgroud)
应该是一样的
res = in << 6;
res = res >> 7; // can also use res >>= 7;
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
第一个结果是:
in = 10011011
res = 01001101
Run Code Online (Sandbox Code Playgroud)
第二个(如预期的那样):
in = 10011011
res = 00000001
Run Code Online (Sandbox Code Playgroud)
所以看起来在第一个例子中,它操作原始数据的每个班次,而不是操作第一个班次,然后在第一个结果上操作第二个班次.想法?