我们常采用0x3f3f3f3f来作为无穷大。
0x3f3f3f3f主要有如下好处:
① 0x3f3f3f3f的十进制为1061109567,和INT_MAX一个数量级,
即1e9数量级,而一般场合下的数据都是小于1e9的;
② 0x3f3f3f3f * 2 = 2122219134,无穷大相加依然不会溢出,
可以使用memset(array, 0x3f, sizeof(array))来为数组设初值为0x3f3f3f3f,
因为这个数的每个字节都是0x3f。
memset是按字节来memset的,不是按个来memset的,
int有四个字节,就会把每个字节都变成0x3f,
一般要么memset成0,要么memset成-1,因为int 型 0每个字节都是0,-1每个字节都是-1.
所以在通常的场合下,const int INF = 0x3f3f3f3f;真的是一个非常棒的选择。