在算法竞赛中,我们常常需要用到设置一个常量用来代表“无穷大”,通常使用 memset 来进行初始化。
1 |
|
memset 的作用 - 会将 c 依次填充到 str 的内存区域。总共填充 n 个 Byte。 - c 虽然是 int,但只取其低 8 位
通常我们设置最大值的形式为:
1 | memset(arr,0x3f,sizeof arr); |
(1)为什么不全部取最大值?
比如对于 int 类型的数,有的人会采用 INT_MAX,即
0x7fffffff
作为无穷大。但是以 INT_MAX
为无穷大常常面临一个问题,即加一个其他的数会溢出。
(2)为什么不是 0x4f
和 0x5f
因为 0x4f + 0x4f
会导致溢出,即无穷加无穷会错。
参考资料
- https://www.acwing.com/file_system/file/content/whole/index/content/4799/