C语言把int型变量A高位赋值给char型变量B;其中int 型为16位,char型变量为8位;

如题,是不是应该B=(char)(A>>8)&0x00ff;这样就可以?谢谢回答!zwblueksy朋友说的不是很明白,我是新手,所以请问你是不是用了函数?static_... 如题,是不是应该 B=(char)(A>>8) &0x00ff; 这样就可以?
谢谢回答!
zwblueksy 朋友说的不是很明白,我是新手,所以请问你是不是用了函数? static_cast 是什么意思?谢谢!
展开
 我来答
pingerww
推荐于2017-09-16
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
右移操作需要区分有符号右移和无符号右移,无符号数右移时在前面补零,有符号数右移时在前面补符号位(0或1)

本题16位int型转化为8位char型,int型的高8位将被阶段,实际传给char型的数值只有低8位,可以用:

B = (char)(A>>8);实现,

加上后面的&有利于代码的规整性与可读性(表明你考虑到了右移操作的有符号和无符号的区别),可以这样写:

B = (char)((A>>8)&0x00ff);(注意括号与优先级,强制转换优先级高于&)

另外c语言中使用(char)的强制转换方式,而static_cast<char>是属于标准c++的强制转化方式
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zwblueksy
2010-11-05 · TA获得超过362个赞
知道答主
回答量:232
采纳率:0%
帮助的人:242万
展开全部
B = static_cast<char>(A>>8);//这句就已经做到你的要求

实际可以分两部
A &= 0xff00;
取高位
char B = static_cast<char>(A >> 8);
其实和上面的一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qqylh
2010-11-05 · TA获得超过321个赞
知道小有建树答主
回答量:123
采纳率:0%
帮助的人:152万
展开全部
后面的与运算其实不需要,前面char进行了强制类型转换,只保留低八位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Head_Creaker
2010-11-05
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
B=(char)((A>>8) &0x00ff)
应该这样吧。优先级好像不是很准确
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tohorizon
2010-11-11 · 超过11用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:34.5万
展开全部
static_cast 是强制类型转换
和B=(char)(A>>8) 是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式