读书人

为什么啊该怎么解决

发布时间: 2012-04-04 16:38:51 作者: rapoo

为什么啊??、
#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

[解决办法]
你把a的每一个字节都赋值为01,a[0]=0x01010101 = 16843009没问题啊
[解决办法]
结果无误,你想要这个结果吧

#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
[解决办法]
void *memset(void *s, int ch, size_t n);
将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作

这样,你的数组的每个元素初始化值对应的二进制为1 00000001 00000001 00000001
对应的int 就是16843009
[解决办法]
这是你要的效果

C/C++ code
#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;}
[解决办法]
探讨

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

读书人网 >C语言

热点推荐