$\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}$ | 略 |