我制作了一个基于函数重载的程序,它由 2 个函数 int cube (int) 和 float cube(float) 组成。我的主要函数分别读取 int x 和 float y 的值。现在当我运行程序时,我将一个浮点值而不是整数 va;ue 当我将 2.5(十进制值)而不是整数值放入变量 "x" 中时,编译器不会问我 y 的值,自动为 x(整数)为 2,为 y(浮点数)自动为 0.5,并返回 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;
}
输出是 -
输入一个数字找到它的立方 2.5 数字 2 的立方是 8 输入数字找到它 的立方 数字 0.5 的立方是 0.125
任何人都可以帮助我谢谢
您尝试读取一个int
值,但提供一个浮点值作为输入。这意味着程序将读取整数部分,一旦它看到与整数值的模式('.'
在您的情况下)不匹配的内容,就立即停止读取,并将其留在输入缓冲区中以供下一个输入操作。
如果要读取整行并丢弃未解析的输入,请std::istream::ignore
在每个输入之后使用。或者使用 将整行读入字符串std::getline
并使用std::istringstream
来“解析”输入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句