memset 可以对高位数组进行初始化, 非常方便需要注意的是 memset 的头文件是 string.h 和 memory.h
下面来谈 memset 的 4 个使用技巧:
(注: 一下 dp 高维数组都是全局变量, 局部变量请自行修改 sizeof 语句)
1. 用 memset 赋 0
memset(dp, 0, sizeof(dp));
2. 用 memset 赋 -1
memset(dp, -1, sizeof(dp));
在计算机中, 数据用补码保存 - 1 的补码 (32 位) 是 0xFFFFFFFF,(8 位, 一个字节)是 0xFF,memset 是按字节填充的, 所以不影响赋值的真实性
3. 用 memset 赋 INF
memset(dp, 127, sizeof(dp));
127 用 8 位二进制数表示是 0b01111111:
用四个 0b01111111 填充到一个 32 位的 int 中:
得到了一个接近 32 位无穷大 (0x7FFFFFFF=2147483647) 的数
4. 用 memset 赋 - INF
memset(dp, -127, sizeof(dp));
-127 用补码表示是 0b10000001 , 用 4 个 0b10000001 填充到 int 中:
得到了一个绝对值非常大的一个负数
来源: http://www.bubuko.com/infodetail-2494269.html