通过运行程序得到结果,但是不知道原因,求解

unsigned int aucVarlow=1;unsigned int aucVarhi=2;则表达式aucVarhi<<4+aucVarlow值为_64_
2026年09月25日 09:23
有3个网友回答
网友(1):

表达式
aucVarhi<<4+aucVarlow

等价于
aucVarhi<<(4+aucVarlow)

也就是说,左移运算符<<的优先级低于算术运算+的优先级
实际上是把2左移了5(即4+1)位,变成了64。

网友(2):

应该是33才对,无符号整型转成整型产生的错误

printf("%u",(unsigned int)(aucVarhi<<4)+(unsigned int)aucVarlow);

网友(3):

移位操作

2 的2进制 0000 0010
移动5位 0100 0000 等于64