为什么啊??、

CoolEgos 2012-03-23 04:43:47
#include <stdio.h>
#include <string.h>
int main()
{
int a[100]={0};
memset(a,1,sizeof(a));
printf("%d\n",a[0]);
return 0;
}
//a[0]=16843009
...全文
83 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CoolEgos 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tujiaw 的回复:]

引用 5 楼 a38017032 的回复:

为什么a[0]不等于1?

memset设置的是每一位都是1
你这个a[0]是一个int型,四个字节, 有32位,也就是32个1,
怎么可能等于1呢
[/Quote]了解了,谢谢啦
bluezhao 2012-03-23
  • 打赏
  • 举报
回复
学习了 哈哈 原来如此,不过一般都用memset初始化char类型。
ningto.com 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 a38017032 的回复:]

为什么a[0]不等于1?
[/Quote]
memset设置的是每一位都是1
你这个a[0]是一个int型,四个字节, 有32位,也就是32个1,
怎么可能等于1呢
CoolEgos 2012-03-23
  • 打赏
  • 举报
回复
为什么a[0]不等于1?
possibleonline 2012-03-23
  • 打赏
  • 举报
回复
这是你要的效果

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
char a[100]={0};
memset(a,1,sizeof(a));
printf("%d\n",a[0]);
return 0;
}
老鼠期待爱 2012-03-23
  • 打赏
  • 举报
回复
void *memset(void *s, int ch, size_t n);
将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作

这样,你的数组的每个元素初始化值对应的二进制为1 00000001 00000001 00000001
对应的int 就是16843009
gameslq 2012-03-23
  • 打赏
  • 举报
回复
结果无误,你想要这个结果吧

#include <stdio.h>
#include <string.h>
int main()
{
int a[100]={0};
memset(a,0xff,sizeof(a));
printf("%08x\n",a[0]);
return 0;
}
结果为 0xffffffff
nice_cxf 2012-03-23
  • 打赏
  • 举报
回复
你把a的每一个字节都赋值为01,a[0]=0x01010101 = 16843009没问题啊

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧