关于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了? 展开
比如说a,b是 unsigned char的,c是unsigned int的,c=(a<<8)+b;
a会不会因为只有8位左移八位后就变成0了? 展开
展开全部
答:
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语言有帮助。
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语言有帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询