为什么啊??、
#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;}
[解决办法]