memset初始化时只能将数组的值初始化为0或者-1

输入其他值则会出错

memset初始化出错

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原因:


很简单,memset是一个字节一个字节设置的,取要赋的值的后8位二进制进行赋值。

1的二进制是(00000000 00000000 00000000 00000001),取后8位(00000001),int型占4个字节,当初始化为1时,它把一个int的每个字节都设置为1,也就是0x01010101,二进制是00000001 00000001 00000001 00000001,十进制就是16843009。

之所以输入0,-1时正确,纯属巧合。

0,二进制是(00000000 00000000 00000000 00000000),取后8位(00000000),初始化后00000000 00000000 00000000 00000000结果是0
-1,负数在计算机中以补码存储,二进制是(11111111 11111111 11111111 11111111),取后8位(11111111),则是11111111 11111111 11111111 11111111结果也是-1

要想赋值为1,还是的乖乖for循环

 

参考

memset()初始化为1的那些事

 

 

 

 

 

 

相关文章:

  • 2021-11-14
  • 2021-09-07
  • 2021-06-07
  • 2021-09-28
  • 2022-12-23
  • 2022-02-20
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2022-01-22
相关资源
相似解决方案