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