为什么这个C ++程序打印“2”?

时间:2013-05-17 09:12:48

标签: c++ cin

我是 C ++ 的新手,但这是我的代码:

#include <iostream>
using namespace std;

int main() {
    int x;
    cin >> x;
    cout << "x = " << x << endl;
    system("pause");
    return 0;
}

每当我输入字母时,它总是打印x = 2。我知道我应该输入数字,但为什么是“2”?

2 个答案:

答案 0 :(得分:12)

因为您有未定义的行为。您应该从不使用任何输入值,而无需先检查输入是否成功。当输入失败时访问输入值(如果输入int的alpha,它将会保留)将使值保持其先前状态 - 如果您从未初始化它,否则未初始化(并且访问未初始化的值是未定义的行为)。

答案 1 :(得分:5)

因为x是不确定的 - 你没有给它一个值。将其更改为int x = 42;,它会为您提供确定的值。

如果operator >>cin >> x中发生的事情)在x没有找到至少一个数字(跳过任何空格后)之后没有改变cin的值输入。

您可以(并且应该)使用if (cin >> x) ... safe to use x ...; else cout << errormessage;检查{{1}}是否成功。

但我试图解释“它是怎么来的2”,而不是“这里的章节和阅读输入的诗句。”