为什么 memset 不以类似的方式将所有值存储在二维数组中?

问题描述 投票:0回答:1

我有一个二维数组设置为

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,因为它应该是。这是什么原因呢?

c++ memset
1个回答
0
投票

因为

memset
设置 字节, 不是整数。

-1
之所以有效,是因为它在每个字节中存储
0xff
,并且碰巧,对于四字节
0xffffffff
,位模式
-1
int
(如果您的
0xffffffffffffffff
类型是,则
int
同上)八个字节。

但是,

-3
存储
0xfd
,并且位模式
0xfdfdfdfd
不是
-3
,而是
0xfffffffd
)。

© www.soinside.com 2019 - 2024. All rights reserved.