编程memset数组初始化,如图

为什么f【1】!=99999... 为什么f【1】!=99999 展开
 我来答
White_MouseYBZ
2015-08-15 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6697万
展开全部
不知你从哪里学到的memset的这种用法!memset对内存的操作是以字节为单位的,99999这个数的二进制是11000011010011111,超出了一个字节8位能存储的长度,按照C的规则则在赋值时要从低位向高们截断处理,那么截得的低8位是10011111。所以执行memset(f,99999,sizeof(f));后,数组f的空间里的每一个字节都存入了10011111。但你输出时是按int输出的,所以实际上输出了4个字节,即10011111 10011111 10011111 10011111。而这个数由于最高位是1,所以要对其取补输出,这个数最后被变为11100000 01100000 01100000 01100001(补码),即十进制的-1616928865。你想把数组f的每一个元素都设置为99999,那得用循环赋值的办法:
for(int i=0;i<105;f[i++]=99999);就可以了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式