假设我们有两个变量s_v(short)和us_v(unsigned short)分别设置为最大的short值,将两个变量值都加1,看下会出现什么结果; 然后将两个变量s_v(short)和us_v(unsigned short)分别设置为最小的short值,将两个变量值都减1,看下会出现什么结果。

#include "iostream";
#define ZERO 0;

int main()
{
	//典型的整型溢出行为   Nliki
	using namespace std;
	cout << "将变量值 s_v和us_v 设置成最大的short值" << endl;
	short s_v = SHRT_MAX;
	unsigned short us_v = SHRT_MAX;
	cout << "s_v = " << s_v << endl;
	cout << "us_v = " << us_v << endl;
	cout << "将变量值 s_v和us_v 都加1 结果" << endl;
	s_v += 1;
	us_v += 1;
	cout << "s_v = " << s_v << endl;
	cout << "us_v = " << us_v << endl;
	cout << "-----------------------------------------" << us_v << endl;
	cout << "将变量值 s_v和us_v 设置成最小的short值" << endl;
	s_v = ZERO;
	us_v = ZERO;
	cout << "s_v = " << s_v << endl;
	cout << "us_v = " << us_v << endl;
	cout << "将变量值 s_v和us_v 都减1 结果" << endl;
	s_v -= 1;
	us_v -= 1;
	cout << "s_v = " << s_v << endl;
	cout << "us_v = " << us_v << endl;

	return 0;
}

  输出结果:

将变量值 s_v和us_v 设置成最大的short值
s_v = 32767
us_v = 32767
将变量值 s_v和us_v 都加1 结果
s_v = -32768
us_v = 32768
-----------------------------------------32768
将变量值 s_v和us_v 设置成最小的short值
s_v = 0
us_v = 0
将变量值 s_v和us_v 都减1 结果
s_v = -1
us_v = 65535

 

示意图

典型的整型溢出行为

以上可以看出,这些整型符号的行为就像一个圆,如果超越了限制,其值将为范围另一端的值。

相关文章: