一个溢出的小程序!
#include<iostream>using namespace std;
int main()
{
//测试溢出
short n=32767,m; //n取short类型的最大值
cout<<"n="<<n<<endl;
m=n+1; //引起溢出
cout<<"n+1="<<m<<endl;
return 0;
}
哪位对溢出有更深的理解,请教一下。
溢出的作用是什么?
谢谢了!
n=32767时,内存表示为:01111111111111111;用十六位存储一个short型整数。m=n+1时,m在内存中的表示为:1000000000000000(=01111111111111111+1);这是-32768的补码形式。因此,程序将输出 -32768。计算机中的每一种数据类型都有一个范围,只能容纳该范围内的数。超出这个范围就是溢出。但是程序并不报错,要程序员来保证结果的正确。