我基于函数重载创建了一个程序,包括2个函数int cube(int)和float cube(float)。我的main函数分别读取int x和float y的值。现在当我运行程序时,我把一个浮点值代替整数va; ue当我在变量“x”中放入2.5(十进制值)而不是整数值时,编译器不会问我y的值,并且自动2表示x(int),0.5表示y(float)并返回0.5的立方体。为什么会这样。为什么0.5会自动存储在y而不是询问输入?
我的程序就像那样 -
#include<iostream>
using namespace std;
int main()
{
int x;
float y;
int cube(int);
float cube(float);
cout<<"Enter a number to find its cube"<<endl;
cin>>x;
cout<<"The cube of the number "<<x<<" is "<<cube(x)<<endl;
cout<<"Enter a number to find its cube"<<endl;
cin>>y;
cout<<"The cube of the number "<<y<<" is "<<cube(y)<<endl;
return 0;
}
int cube (int num)
{
return num*num*num;
}
float cube (float num)
{
return num*num*num;
}
输出是 -
Enter a number to find its cube 2.5 The cube of number 2 is 8 Enter the number to find its cube The cube of number 0.5 is 0.125
任何人都可以帮我解决这个问题 感谢
答案 0 :(得分:1)
您尝试读取int
值,但提供浮点值作为输入。这意味着程序将读取整数部分,一看到与整数值模式(在您的情况下为'.'
)不匹配的内容就停止读取,并将其保留在输入缓冲区中以供下一个使用输入操作。
如果您想读取整行并丢弃未解析的输入,请在每次输入后使用std::istream::ignore
。或者使用std::getline
将整行读入字符串,并使用std::istringstream
“解析”输入。
答案 1 :(得分:0)
这很简单:
cout<<"Enter a number to find its cube"<<endl;
你输入2.5
cin>>x;
这会读取2
(设置x=2
)并停止,因为.5
不能成为int
的一部分。
cout<<"The cube of the number "<<x<<" is "<<cube(x)<<endl;
cout<<"Enter a number to find its cube"<<endl;
cin>>y;
.5
仍然在输入流中,因此读取以设置y=0.5
。无需输入其他数字,因此程序不会停止等待输入。