C中的移位运算符优先级

巴尔塔萨尔

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位。在第一种情况下,您不是,因此不会发生截断,并且保留高位并将其向后移回。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++运算符优先级和return语句

来自分类Dev

C ++ std :: cout和<<运算符,优先级

来自分类Dev

Java中的逻辑运算符优先级

来自分类Dev

Java中的运算符优先级(移位运算符):为什么以下输出为真?

来自分类Dev

Haskell中的中缀运算符优先级

来自分类Dev

Haskell中的运算符和函数优先级

来自分类Dev

Swift中的运算符优先级重载

来自分类Dev

c中运算符的优先级

来自分类Dev

C中运算符优先级的奇怪结果

来自分类Dev

PHP中的运算符优先级

来自分类Dev

EXCEL中运算符优先级的顺序

来自分类Dev

C ++中的运算符优先级

来自分类Dev

OCaml中的@@和|>运算符优先级

来自分类Dev

C中的短路和运算符优先级

来自分类Dev

C ++:Stroustrup示例中的运算符优先级

来自分类Dev

Haskell中的运算符与匿名函数优先级

来自分类Dev

C运算符中的优先级==和(=)

来自分类Dev

C ++与C#运算符优先级

来自分类Dev

Java中的逻辑运算符优先级

来自分类Dev

c中运算符的优先级

来自分类Dev

查找命令中的运算符优先级?

来自分类Dev

Java中运算符的优先级

来自分类Dev

在Python中,运算符“ =”的优先级是什么?

来自分类Dev

选择器中的运算符优先级

来自分类Dev

输出流中的C ++运算符优先级

来自分类Dev

C解释中的运算符优先级

来自分类Dev

C 中的优先级运算符

来自分类Dev

C中的运算符优先级?

来自分类Dev

C中'or'和'and'运算符的优先级