强制转换为数组类型有什么要求吗?怎样才能将一个int类型的数组转换为char类型的数组?

假设我定义了一个数组intarray[]={0,1};现在将其转化为一个char[4]类型的数组,为什么不能用(char[])array强制将array转化为数组名类型?... 假设我定义了一个数组
int array[] = {0, 1};
现在将其转化为一个char[4]类型的数组,为什么不能用
(char[]) array强制将array转化为数组名类型?
但是,强制转化为数组类型是可以的:
int * p = (int[]){0, 1};
原因何在?
展开
 我来答
CodeBlove
2021-03-09 · TA获得超过3364个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:247万
展开全部

可以转,但是会让你意外,因为你忘了int是4字节的,否则你也不会有这个问题。

int的数据宽度是4字节,char是单字节的,如果一个int超过255则一个char是无法记录的,会造成数据丢失,但是如果按字节一一对应转,可能会出现多余的0,而且数值意义也丢失,而编译器不确定你到底要怎么处理,因此无法做到隐式转换,只能报错。


于是最终还是要问你自己,是一个字节一个字节转换呢,还是按值转换成char,如果按值转换,那么大于255的值怎么处理?当然还有可能其他需求,因此,最终你得根据自己要求编写代码来实现定制转换。

百度网友1442c68
2021-03-09 · TA获得超过1083个赞
知道大有可为答主
回答量:4466
采纳率:57%
帮助的人:829万
展开全部
你这个想法还真不能直接实现,必须你自己动手,定义一个新的字符数组,然后一个个的强制转换。
追问
但为什么用char[]强制转化可以将{0,1}转化为“数组名类型”呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
arongustc
科技发烧友

2021-03-09 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:6034万
展开全部
你衡量“可以转换”的标准是编译通过么?这显然是不严谨的,编译器有时候检查很弱
数组的元素在内存中是依次排放的,换成其他类型以后,内存中存放的对象又不会变化,你用其他类型的数组对象去访问,一定无法访问到正确对象
就如同一排箱子,每个箱子1米正方体,你用2.5米正方体的数组去找他,第二个2.5米正方体在第三个箱子的中间,这样定位到箱子中间的访问有意义么?
追问
我是想试一下这样能不能像引入union那样,做到类似按位操作的效果。因为这个int数组里的数高位和低位含义不同,原本是要用位操作,现在想想能不能这样强制转化,看来不那么好实现呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式