gpt4 book ai didi

c - C 中的移位运算符优先级

转载 作者:太空狗 更新时间:2023-10-29 15:13:55 29 4
gpt4 key购买 nike

C 中的位移运算符没有按我预期的那样运行,这无疑是我的误解,但是有人可以解释一下发生了什么吗?

unsigned char in = 155;
unsigned char res;

res = (in << 6) >> 7;

应该和

一样
res = in << 6;
res = res >> 7; // can also use res >>= 7;

但事实并非如此。

第一个结果是:

in  = 10011011
res = 01001101

第二个(如预期):

in  = 10011011
res = 00000001

所以看起来在第一个实例中,它是对原始数据进行每个移位操作,而不是对第一个移位进行操作,然后对第一个结果进行第二个移位。想法?

最佳答案

计算在 int 中完成。在第二种情况下,您将分配给 res,它将在移回之前截断为 8 位。在第一种情况下,您不是,因此不会发生截断,高位会保留并向下移动。

关于c - C 中的移位运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22497935/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com