【发布时间】:2012-09-06 16:38:53
【问题描述】:
#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?);
最迷惑的,a 4,会是0+0=0(为什么不是'0+4=4'??????);
然后我再写一个prog。
#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??)
【问题讨论】:
-
输入应该是一个整数,而不是一个字符。输入“a”、“3.141”或“whatever”根本无效。如果您的输入是“a”,则程序不知道您已将“a”用作变量并且您想使用默认值。
-
很明显是C++11,否则就是1和2,而不是0。
-
回答您的编辑:您尚未从输入中删除 a。您需要
cin.clear(); cin.ignore(1);,以便第二次提取成功。 -
@Drise 你能帮我谈谈 prog3 吗?
-
a 和 b 未初始化。它们具有来自分配给它们的内存的垃圾值。这是毫无意义的信息。始终使用 int a = 0;以确保您将获得可用数据。
标签: c++ error-handling cin