基于函数重载的程序

索拉夫·乔希

我制作了一个基于函数重载的程序,它由 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章