3

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

#include <iostream>
using namespace std;

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

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

4

2 回答 2

12

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

于 2013-05-17T09:18:40.800 回答
5

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

如果operator >>(在 中发生的情况cin >> x)不会更改在x输入中找不到至少一位数字(在跳过任何空格之后)时的值。

您可以(并且应该)cin使用if (cin >> x) ... safe to use x ...; else cout << errormessage;.

但我试图解释“为什么是 2”,而不是“这是关于阅读输入的章节和经文”。

于 2013-05-17T09:15:37.643 回答