[英]If I input a float number when input is expecting an integer number, it updates the next float number value. Why does that happen?
我是 C++ 编程的新手。 所以,我只是在尝试一些基本的 C++ 编码,我编写了以下程序:
#include <iostream>
using namespace std;
int main()
{
int number1;
float number2;
cout << "Enter number1 (integer)\r\n";
cin >> number1;
cout << "Enter number2 (float)\r\n";
cin >> number2;
cout << "Number1 is "<<number1<<"Number2 is "<<number2<<endl;
return 0;
}
当我执行上面的代码并错误地给出一个像“20.7”这样的数字而不是它在提示输入数字1时所期望的integer时,
第二个 cin 语句被跳过,数字 1 打印为 20,数字 2 打印为 0.7。
这是为什么? 我的期望是第一个 cin 应该将 20.7 设为 20 并将其存储在 number1 中,并且不应跳过第二个 cin 并提示我输入。
这是错误的期望吗? 为什么会这样?
您正在将 float 传递给int
。 cin
一看到 '.' 就停止读取。 剩下的数字 7 会自动作为下一个cin
的输入。
如果您认为这些值可能与预期类型不匹配,您可能希望在每次读取后刷新输入缓冲区。
std::cin.clear();
和std::cin.ignore(100,'\n')
。
这将是
std::cin.clear();
std::cin.ignore(whatever_num,'\n');
编辑,看在皮特的份上:
>>
Stream 运营商是罪魁祸首。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.