数据溢出
如果输入数值大于声明的整型,会发生什么?
#include<iostream>
int main()
{
using namespace std;
short int n1,n2;
cin>>n1;
cin>>n2;
cout<<"n1:"<< n1 <<" n2:"<< n2 <<endl;
return 0;
}
编译运行,输入31600000,输出:
n1:32767 n2:0
n1的值为32767,该数字的二进制表示为111111111111111,是short int类型所能表示的最大正数。n2却为0。这是因为std::cin 将 31600000 写入 short int类型时,发现了错误,将自己的 fail 成员设置为 true,之后继续调用std::cin 不会读取缓冲区或触发用户输入。
我们可以使用std::cin.clear()消除错误,使std::cin可以继续工作。
#include<iostream>
int main()
{
us