通过运行程序得到结果,但是不知道原因,求解
unsignedintaucVarlow=1;unsignedintaucVarhi=2;则表达式aucVarhi<<4+aucVarlow值为_64_...
unsigned int aucVarlow=1;unsigned int aucVarhi=2;则表达式aucVarhi<<4+aucVarlow值为_64_
展开
展开全部
表达式
aucVarhi<<4+aucVarlow
等价于
aucVarhi<<(4+aucVarlow)
也就是说,左移运算符<<的优先级低于算术运算+的优先级
实际上是把2左移了5(即4+1)位,变成了64。
aucVarhi<<4+aucVarlow
等价于
aucVarhi<<(4+aucVarlow)
也就是说,左移运算符<<的优先级低于算术运算+的优先级
实际上是把2左移了5(即4+1)位,变成了64。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-10-09
展开全部
应该是33才对,无符号整型转成整型产生的错误
printf("%u",(unsigned int)(aucVarhi<<4)+(unsigned int)aucVarlow);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
移位操作
2 的2进制 0000 0010
移动5位 0100 0000 等于64
2 的2进制 0000 0010
移动5位 0100 0000 等于64
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询