C语言把int型变量A高位赋值给char型变量B;其中int 型为16位,char型变量为8位;
如题,是不是应该B=(char)(A>>8)&0x00ff;这样就可以?谢谢回答!zwblueksy朋友说的不是很明白,我是新手,所以请问你是不是用了函数?static_...
如题,是不是应该 B=(char)(A>>8) &0x00ff; 这样就可以?
谢谢回答!
zwblueksy 朋友说的不是很明白,我是新手,所以请问你是不是用了函数? static_cast 是什么意思?谢谢! 展开
谢谢回答!
zwblueksy 朋友说的不是很明白,我是新手,所以请问你是不是用了函数? static_cast 是什么意思?谢谢! 展开
6个回答
展开全部
右移操作需要区分有符号右移和无符号右移,无符号数右移时在前面补零,有符号数右移时在前面补符号位(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++的强制转化方式
本题16位int型转化为8位char型,int型的高8位将被阶段,实际传给char型的数值只有低8位,可以用:
B = (char)(A>>8);实现,
加上后面的&有利于代码的规整性与可读性(表明你考虑到了右移操作的有符号和无符号的区别),可以这样写:
B = (char)((A>>8)&0x00ff);(注意括号与优先级,强制转换优先级高于&)
另外c语言中使用(char)的强制转换方式,而static_cast<char>是属于标准c++的强制转化方式
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B = static_cast<char>(A>>8);//这句就已经做到你的要求
实际可以分两部
A &= 0xff00;
取高位
char B = static_cast<char>(A >> 8);
其实和上面的一样
实际可以分两部
A &= 0xff00;
取高位
char B = static_cast<char>(A >> 8);
其实和上面的一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
后面的与运算其实不需要,前面char进行了强制类型转换,只保留低八位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B=(char)((A>>8) &0x00ff)
应该这样吧。优先级好像不是很准确
应该这样吧。优先级好像不是很准确
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
static_cast 是强制类型转换
和B=(char)(A>>8) 是一样的
和B=(char)(A>>8) 是一样的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询