【学习笔记】memset 的一些用法

$\text{memset}$ 作为一个好工具,可以快速对整个数组进行赋值,但有时却因为不知道怎么填中间的一维最后被逼循环复制,这里就贴一点常用的赋值方法。

先解释一下 $\text{memset}$ 函数的用法。

$\text{memset(a, val, sizeof a)}$ 能够初始化一个 $\text{int}$ 数组 $\text{a}$,该语句把数值 $\text{val(0x00~0xff)}$ 填充到数组 $\text{a}$ 的每个字节,而一个 $\text{int}$ 有 $\text{4}$ 个字节,所以 $\text{memset}$ 只能赋值出每个字节都相同的 $\text{int}$ (其实 $\text{long long}$ 和 $\text{int}$ 同理) 。

下面给出以下常用的赋值,“较”的原则是整型做运算不会爆,实型则是保证一定位精度,由于每个字节赋出来的值一样,所以就以 $\text{int}$ 和 $\text{double}$ 为例($\text{long long}$ ,$\text{float}$ , $\text{long double}$ 同理)。

数据类型 $\text{val}$ 参数 实际值(只给出 $\text{int}$)
$\text{int}$ (极大值) $\text{0x7f}$ $\text{2139062143}$
$\text{int}$ (较大值) $\text{0x3f}$ $\text{1061109567}$
$\text{int}$ (较小值) $\text{0xc0}$ $\text{-1061109568}$
$\text{int}$ (极小值) $\text{0x80}$ $\text{-2139062144}$
$\text{double}$ (极大值) $\text{0x7f}$
$\text{double}$ (较大值) $\text{0x4f}$
$\text{double}$ (较小值) $\text{0xce}$
$\text{double}$ (极小值) $\text{0xfe}$