典型的整型溢出行为

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nliki/article/details/89018181

       假设我们有两个变量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

示意图

典型的整型溢出行为

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

猜你喜欢

转载自blog.csdn.net/Nliki/article/details/89018181