c++的一道入门问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:11:10
int min(int c,int d)
{
return (c>d ? d:c);
}
int main()
{
double a,b;
cin>>a>>b;
cout<<min(a,b)<<endl;
return 0;
}

照理来说,调用min函数时,double型的数会被转化为int型,最后输出的结果应该是int型的数,但是事实上确实double的数。
我只是希望弄懂出现这种问题的原理,不是想要找解决方法。如果说是int转换成double的话,那么改下这个代码,变成
double min(double c,double d)
{
return (c>d ? d:c);
}
int main()
{
int a,b;
cin>>a>>b;
cout<<min(a,b)<<endl;
return 0;
}

输出的结果却是一个int型的数而不是double型的数!
我只是想搞懂为什么。

关于2楼的答案。难道是编译器的问题?我用的是visual 2008

如果我没想错的话,那个值应该是取决于你输入的变量的,因为你定义的类型和参数类型不一致,实质上执行了一次隐式转换,而在返回值的时候,编译器认为返回的应该和你输入的一致才是正确的数据,它又进行了一次隐式转换,你试试写强行转换成Double类型,再带进去应该不会出现这个问题了。
这是我们写程序常忽略的问题-不去手动转换数据类型。

不对,应该是int转为double!
另外,你为什么要在主函数中把c,d设为double,int不就行了!

在我机子上输出的是整数

这种都是编译器相关的问题,但是很显然,不输出整形那是不对的,