【发布时间】:2020-08-23 14:54:54
【问题描述】:
我是 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”这样的数字而不是它在提示输入 number1 时所期望的整数时,
第二个 cin 语句被跳过,数字 1 打印为 20,数字 2 打印为 0.7。
这是为什么呢?我的期望是第一个 cin 应该将 20.7 设为 20 并将其存储在 number1 中,第二个 cin 不应该被跳过并提示我输入。
这是错误的期望吗?为什么会这样?
【问题讨论】:
-
我认为标准输入会消耗整数所需的内容,然后将其余字符串放回输入中以供下次使用。
-
为什么你认为程序应该跳过输入?如果你想了解事情是如何工作的,你应该阅读一些文档而不是做出假设。如果你只是假设,你会反复出错。
-
您跳过了一个基本概念。您确实不输入浮点数。您输入了输入代码试图解释的 text。如果文本可以解释为整数值,则代码会执行此操作。之后剩下的任何文本都将用于下一个输入。
标签: c++ floating-point integer