关于c语言的位移问题

弱弱的问个问题,unsignedchar的数据左移八位是不是等于0比如说a,b是unsignedchar的,c是unsignedint的,c=(a<<8)+b;a会不会因... 弱弱的问个问题,unsigned char的数据左移八位是不是等于0
比如说a,b是 unsigned char的,c是unsigned int的,c=(a<<8)+b;
a会不会因为只有8位左移八位后就变成0了?
展开
 我来答
知行合一以贯之
2011-09-02 · TA获得超过119个赞
知道答主
回答量:63
采纳率:0%
帮助的人:73万
展开全部
答:
1.unsigned char的数据左移八位,那么低八位会变成0
2.c=(a<<8)+b;因为左边c是unsigned int类型,c语言会进行强制类型转换,把(a<<8)和b当作unsigned int数据类型,这样,如果a=1,那么c将等于c=(1<<8)+b=256+b
这个问题的关键点在于C语言在计算的时候会进行强制类型转换,=右边的数据类型都会被强制转换成=左边的数据类型。换个问题,如果是b=(a<<8),那么无论我们将会得的b=0
希望回答能对于你学习c语言有帮助。
leafallen
2011-09-01 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1169
采纳率:50%
帮助的人:1216万
展开全部
一般而言不会。一般编译器会将a扩展一下(比如扩展到int),然后再加b
不过为了保险起见,你可以c=((unsigned int)a<<8)+b;来得到想要的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式