我有一个二维数组设置为
long long arr[500][500]
运行这个主函数,我得到 m=-1 和 m=-3 的不同值:
int main(){
memset(arr,m,sizeof(arr));
for(int i=0;i<10;i++)
cout<<arr[i][i]<<'\n';
return 0;
}
对于 m=-3:它打印 -144680345676153347 20 次,对于 m=-1,它是 -1,因为它应该是。这是什么原因呢?
因为
memset
设置 字节, 不是整数。
-1
之所以有效,是因为它在每个字节中存储0xff
,并且碰巧,对于四字节0xffffffff
,位模式-1
是int
(如果您的0xffffffffffffffff
类型是,则int
同上)八个字节。
但是,
-3
存储0xfd
,并且位模式0xfdfdfdfd
是不是-3
,而是0xfffffffd
)。