程序基于函数重载

时间:2017-05-27 13:33:40

标签: c++ overloading

我基于函数重载创建了一个程序,包括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

任何人都可以帮我解决这个问题 感谢

2 个答案:

答案 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。无需输入其他数字,因此程序不会停止等待输入。