首页 > 其他分享 >使用memset对数组进行赋值时可能会有的疑惑

使用memset对数组进行赋值时可能会有的疑惑

时间:2023-03-28 23:04:11浏览次数:31  
标签:11111111 int 00000001 memset 数组 赋值

Memset(type name, int value, size) 

*第一个参数为变量的标识符,第二个要赋为数组的值,第三个为数组的大小(单位为字节,可用sizeof()表示)

原理:memset是字节为单位进行复制操作的

1、当memset对char数组赋值时,char的大小是1个字节,因此每个char 元素都能赋值为value

2、对int数组赋值时,因为一个int的大小为4个字节,当赋值为0或-1时不会出现问题,因为0的二进制补码为(00000000),-1的二进制补码为(11111111),而当赋值为非0非-1的数值时,比如赋值为1,那么每个元素最终的赋值结果应该为00000001 00000001 00000001 00000001 十进制为16843009,而不是1;当赋值为511时,结果为-1,因为511的二进制为(00000000 00000000 00000001 11111111)后八位为 (11111111)因此赋值后为每个元素都为(11111111 11111111 11111111 11111111)

3、结论 使用memset对char数组进行赋值时可以赋值为任何字符,对int数组进行赋值时只能赋值为0 或 -1

   

标签:11111111,int,00000001,memset,数组,赋值
From: https://www.cnblogs.com/zkesi/p/17267077.html

相关文章