基于函数重载的程序
Program based on function overloading
我基于函数重载制作了一个程序,由 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
。无需输入另一个数字,因此程序不会停止等待输入。
相关文章:
- 重载操作程序时出错>>用于类中的字符串 memebr
- 在gcc中意外调用了Const重载.编译器错误或兼容性修复程序
- 在Qt小部件应用程序中,在重载的"paintEvent"中的"setValue"
- 重载 <= 运算符,但程序以退出代码 -1073741571 (0xC00000FD) 结尾
- 运算符重载 new 时 void * nullptr 使程序崩溃
- 我的移动分配操作程序重载的分段错误
- 基于函数重载的程序
- 重载" >> " 程序崩溃
- CGI程序的自定义输出缓冲区,运算符重载
- 矩阵运算C++运算符重载程序错误
- 如何删除模板类的输出操作程序重载的错误
- 赋值重载:为什么使用相同的对象会导致程序中出现问题
- 提升程序选项:自定义验证器是否需要重载运算符>>?
- 运算符重载程序中的混淆
- 在 c++ 计算器程序中重载 '+' 运算符时无法获得正确的输出
- 在 XML 解析程序上没有可行的重载
- C++ 程序上没有可行的重载'='
- 重载运算符==具有采用模板化迭代程序的自由函数
- 重载内存映射文件加载程序(C++)
- “我的程序”使用重载运算符保持seg错误