有什么不同?为什么有3???) 不同的结果?
signed char b;
b = 66 << 2 >> 8;
fprintf(stdout, "%d\n", b);
输出:“1”
signed char b;
b = 66 << 2;
b = b >> 8;
fprintf(stdout, "%d\n", b);
输出:“0”
signed char b;
b = 2 >> 8;
b = 66 << b;
fprintf(stdout, "%d\n", b);
输出:“66”
谢谢你的帮助!
最佳答案
signed char b = 66 << 2 >> 8;
这里,
66 << 2
变成signed int
264(signed int
因为它是一个中间结果),移位>> 8
,变成1。signed char b = 66 << 2;
这里,264(与上面相同)被“按下”成
signed char
,将其变成8。在这里应用>> 8
将得到0。好吧,第三个例子,
2 >> 8
是0,所以66
保持不变。关于c - c中移位位的正确顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54442891/