基于函数重载的程序

Program based on function overloading

本文关键字:重载 程序 函数 于函数      更新时间:2023-10-16

我基于函数重载制作了一个程序,由 2 个函数 int cube (int( 和 float cube(float( 组成。我的主函数分别读取 int x 和浮点数 y 的值。现在当我运行程序时,我放了一个浮点值而不是整数 va;ue 当我在变量"x"中输入 2.5(十进制值(而不是整数值时,编译器不会问我 y 的值,自动 2 表示 x(int(和 0.5 表示 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"解析"输入。

这很简单:

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。无需输入另一个数字,因此程序不会停止等待输入。