我是C++新手,但这是我的代码:
#include <iostream>
using namespace std;
int main() {
int x;
cin >> x;
cout << "x = " << x << endl;
system("pause");
return 0;
}
每当我输入字母时,它总是打印x = 2
. 我知道我应该输入数字,但为什么是“2”?
因为你有未定义的行为。在没有首先检查输入是否成功之前,您永远不应该使用任何输入值。在输入失败时访问输入值(如果您为 int 输入 alpha 则访问输入值)将使该值保持其先前的状态 - 如果您从未初始化它,否则未初始化(并且访问未初始化的值是未定义的行为)。
因为x
是不确定的——你没有给它一个值。将其更改为int x = 42;
,它将为您提供确定的值。
如果operator >>
(在 中发生的情况cin >> x
)不会更改在x
输入中找不到至少一位数字(在跳过任何空格之后)时的值。
您可以(并且应该)cin
使用if (cin >> x) ... safe to use x ...; else cout << errormessage;
.
但我试图解释“为什么是 2”,而不是“这是关于阅读输入的章节和经文”。