32位的正无穷一般表示为0x3f3f3f3f,相加仍然为正数。
将其按位取反,得0xc0c0c0c0,就可以用来表示负无穷了,相加仍然为负数。
测试代码:
#include <iostream>
#include <limits.h>
using namespace std;
int main() {
int n1 = -0x3f3f3f3f;
int n2 = 0xc0c0c0c0;
<< n1 << endl << n1 + n1 << endl;
cout << n2 << endl << n2 + n2 << endl;
cout << INT_MIN << endl;
cout
return 0;
}
结果:
-1061109567
-2122219134
-1061109568
-2122219136
-2147483648
可以看到这样写比写-0x3f3f3f3f要优越一些(比它小,而且可以用memset初始化)