为什么cin.fail()的行为与十进制输入和字符输入不同?

时间:2016-06-10 08:18:41

标签: c++

字符和十进制数都有不同的数据类型在c ++中定义。为什么我得到以下输出?

#include<iostream>
using namespace std;
int main()
{
int a;
cin >> a;
cout << (cin.fail());     //Output is 1 when input is a character
return 0;                 //Output is 0 when input is a decimal number
}

2 个答案:

答案 0 :(得分:0)

字符和数字确实具有不同的数据类型,但是您的代码在上面明确地寻找 int 因为语句cin >> a;有一个int作为rhs operator>>的。{如果您尝试输入非数字字符串,则会失败。

答案 1 :(得分:0)

当上次操作成功时,

cin.fail()将返回false,否则将返回true。当您将truefalse传递给cout时,它会分别打印10

如果您想读取一个数字并且用户向您发送一个字符并且您已阅读它,则此操作被视为失败。如果您正在阅读某个角色并且用户通过了字符,cin.fail()将返回true,但您正在读取一个数字,因此它返回false