#include
using namespace std;
int add(int x,int y)
{
return x+y;
}
int add(double x,double y)
{
return x+y;
}
void main()
{
int sum1=0;
double sum2=0;
int a,b;
cout<<"输入两个整数:";
cin>>a>>b;
sum1=add(a,b);
sum2=add(a,b);
cout<<"sum1="<<sum1<<endl;
cout<<"sum2="<<sum2<<endl;
}
我测试了没有发现问题,你是不是输入不正确,输入不是整数
编译器不会根据返回值类型选择函数,=左侧的变量类型不会用于推断函数类型,只会根据传入参数类型判断。
函数等价于如下程序,赋值double类型会自动类型转换
void main() {
int sum1=0;
double sum2=0;
int a,b;
cout<<"输入两个整数:";
cin>>a>>b;
sum1=add(a,b);
int temp = add(a, b); //由于a,b都是int,选用int的函数,temp定义为int是表示返回值类型
sum2=temp); //赋值sum2会自动从int转成double
cout<<"sum1="<<sum1<<endl;
cout<<"sum2="<<sum2<<endl;
}
建议将你遇到的错误或者预期结果写出来,只看代码是是没有问题的,