负无穷的一种写法

32位的正无穷一般表示为0x3f3f3f3f,相加仍然为正数。
将其按位取反,得0xc0c0c0c0,就可以用来表示负无穷了,相加仍然为负数。

测试代码:

#include <iostream>
#include <limits.h>

using namespace std;

int main() {
	int n1 = -0x3f3f3f3f;
	int n2 = 0xc0c0c0c0;

	cout << n1 << endl << n1 + n1 << endl;
	cout << n2 << endl << n2 + n2 << endl;
	cout << INT_MIN << endl;

	return 0;
}

结果:

-1061109567
-2122219134
-1061109568
-2122219136
-2147483648

可以看到这样写比写-0x3f3f3f3f要优越一些(比它小,而且可以用memset初始化)

posted @ 2024-09-28 14:13  寻找繁星  阅读(0)  评论(0编辑  收藏  举报