#include<iostream>;
int main()
{
int a = 1;
int b = 2;
std::cin >> a >> b;
std::cout << a << "+" << b << "=" << a+b << std::endl;
return 0;
}
当我输入 3 4
时,输出将是 3+4=7
,好吧,这很奇怪;
但是当我输入a b
时,输出是0+0=0
(为什么是0和0?);
最令人困惑的是,一个4
,它会是0+0=0
(为什么不是'0+4=4'?????);
然后我写另一个程序。
#include<iostream>;
int main()
{
int a = 1;
int b = 2;
std::cin >> a;
std::cin.clear();
std::cin >> b;
std::cout << a << "+" << b << "=" << a+b << std::endl;
return 0;
}
当我输入a 4
时,为什么还是0+0=0
?不应该是0+4=4
吗?
感谢所有的热心人!!
我写了prog3,测试当我不写int a=1;int b=2
;
2
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin >> a ;
cin >> b;
cout<< a << "+"<< b <<"="<< a+b << endl;
return 0;
}
再次a b
时,输出0+-1218170892=-1218170892
(为什么不是0+0=0
??)
最佳答案
像所有 istream
一样,std::cin
有错误位。发生错误时会设置这些位。例如,您可以使用 good()
、bad()
、eof()
等函数找到错误位的值。如果您读取了错误的输入(fail()
返回 true
),请使用 clear()
清除标志。您可能还需要 ignore(1);
来删除违规字符。
有关详细信息,请参阅状态函数
部分。 http://en.cppreference.com/w/cpp/io/basic_ios
关于c++ - 出错时cin做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12408848/