C++ 向浮点输入非数值

C++ 向浮点输入非数值,c++,char,cout,cin,C++,Char,Cout,Cin,我有一个简单的代码,我将值输入到两个浮点变量,然后显示它们。我无法理解的是,如果我以非数字形式输入,会发生什么。就像我输入“a”(不带“”)时一样,会生成一个奇怪的数字-2.69525+0323.21398e=039。这个数字是如何产生的,为什么产生的 #include<iostream.h> int main() { float x,y; cin>>x>>y; cout<<x<<y; return 0

我有一个简单的代码,我将值输入到两个浮点变量,然后显示它们。我无法理解的是,如果我以非数字形式输入,会发生什么。就像我输入“a”(不带“”)时一样,会生成一个奇怪的数字-2.69525+0323.21398e=039。这个数字是如何产生的,为什么产生的

#include<iostream.h>

int main()
{
    float x,y;
    cin>>x>>y;
    cout<<x<<y;
    return 0;
}
#包括
int main()
{
浮动x,y;
cin>>x>>y;

cout
-2.69525+0323.21398e=039
实际上是两个没有空格的奇怪数字

它们很可能是从
x
y
开始的随机值。
cin
失败,因此它们没有改变

如何阻止某人输入非数值?
  • 对他们大喊大叫,威胁不要吃甜点-或者-
  • 将值作为字符串导入,将其作为数字进行验证,然后将其转换为浮点数

-2.69525+0323.21398e=039
实际上是两个没有空格的奇怪数字

它们很可能是从
x
y
开始的随机值。
cin
失败,因此它们没有改变

如何阻止某人输入非数值?
  • 对他们大喊大叫,威胁不要吃甜点-或者-
  • 将值作为字符串导入,将其作为数字进行验证,然后将其转换为浮点数

输入失败,如果您检查了返回值,您就会知道这一点,并且变量将保留在声明它们时具有的任何未初始化的随机值中。也就是说,
x
y
的随机值被初始化。这就是为什么您应该始终初始化变量的原因。@RetiredInja我不知道它是否为非常愚蠢的问题,但我如何检查main()返回的值?输入失败,如果您检查了返回值,您就会知道这一点,并且变量将保留在您声明它们时所具有的任何未初始化的随机值中。也就是说,
x
y
的随机值被初始化。这就是为什么您应该始终初始化变量的原因。@RetiredInja我不知道它是否为re这是一个愚蠢的问题,但是我如何检查main()返回的值呢?谢谢你的回答。所以我得到了输入到字符数组中的值,使用isdigit()验证它们是否为数字?但是对于中间的小数点我应该怎么做?请详细说明一下这个过程。我不是很确定。谢谢你的回答。所以我得到了一个字符数组中输入的值,用isdigit()验证它们是否为数字?但是对于中间的小数点我应该怎么做?请详细说明一下这个过程。我不是很确定。