关于无符号数的减法为负值

#include 
using namespace std;

int main()
{
	unsigned int u1 = 42, u2 = 10;
	cout << u1 - u2 << endl;
	cout << u2 - u1 << endl;
	return 0;
}

上面的输出结果为:

32

4294967264

显然下面的结果是-32与16位整数取模后的值。

这样理解:两个无符号数相减后,类型依然为无符号类型,然后将其输出。

注意for循环时条件里面的变量不要用无符号类型,否则可能会造成死循环。

#include 
using namespace std;

int main()
{
	for (unsigned i = 10; i >= 0; i++) //死循环
		cout << i;
	cout << endl;
	return 0;
}


你可能感兴趣的:(C++)