我是 C ++ 的新手,但这是我的代码:
#include <iostream>
using namespace std;
int main() {
int x;
cin >> x;
cout << "x = " << x << endl;
system("pause");
return 0;
}
每当我输入字母时,它总是打印x = 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”,而不是“这里的章节和阅读输入的诗句。”