int在32位平台下一般是4个字节,memset是以字节为单位运算的,不是按位运算的。执行完 memset(a, 1, sizeof(a)) 后,每个字节都是1,4个为1的字节组装为1个int,对a来说每个元素等于 ( 1 << 24 ) + ( 1 << 16 ) + (1 << 8 ) + 1 = 16843009。执行完 memset(a, -1, sizeof(a)) 后,每个字节都是255,4个255组装为1个int,对a来说每个元素等于 ( 255 << 24 ) + ( 255 << 16 ) + ( 255 << 8 ) + 255 = 0xFFFFFFFF,转为int就是 -1。不为0的情况下,考虑到可移植性,最好还是用循环来赋值。
int a[100]; memset(a, 0, sizeof(int)*100);//对数组大小,应该这样表示
13,826
社区成员
102,678
社区内容
加载中
试试用AI创作助手写篇文章吧