1个回答
展开全部
不知你从哪里学到的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);就可以了。
for(int i=0;i<105;f[i++]=99999);就可以了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询