关于C++输入的问题

浏览:33日期:2023-03-14

问题描述

有这样一段程序:

#include <iostream>using namespace std;int main(){ int a, b, c, d, e, f; cin >> a; cout << endl << 'a = ' << a << endl << endl; cin >> b; cout << endl << 'b = ' << b << endl << endl; cin >> c; cout << endl << 'c = ' << c << endl << endl; cin >> d; cout << endl << 'd = ' << d << endl << endl; cin >> e; cout << endl << 'e = ' << e << endl << endl; cin >> f; cout << endl << 'f = ' << f << endl << endl; return 0;}

我如果直接输入一个很大的数(比如99999999999,事实上只要>4个字节就行),或者字母,就会产生如下输出:

a = 2147483647b = 0c = 0d = 0e = 4197408f = 0

这该如何理解呢?

C++新手跪请大神指点一二

问题解答

回答1:

因为你输入了超过类型长度的数据,cin变成了fail状态,以后的输入操作都不会进行。你又没有初始化那些变量,所以都是随机值。这时cin.fail()会为真。需要cin.clear()才能继续输入。

回答2:

你用的是 Visual Studio?

你输入的极大数或字母超出了 int 类型的范围,导致了未定义行为。

VS 2015 中 C++ int 类型的范围是 -2147483648~2147483647。

发生溢出时如何处理取决于编译器。

相关文章: