求解问题,为什么?!

#include
using namespace std;
float fun(int x,int y)
{
return x/y;
}
int main()
{
cout<<fun(7,2)/2<<endl;
return 0;
}
这个输出是1.5
为什么?
fun函数返回的不应该是float型的数吗,那返回的不应该是3.5吗?为什么是3.0

return x/y
先算7/2 = 3
再把3转成float

img


运算的两个值x,y都是int类型,需要其中一个转成double类型,否则,算出来是int类型的3,再返回double类型的3.0

x / y,x和y都是整型,计算结果也是整型,所以计算结果是3,然后返回时转换为float型3.0,
cout << fun(7, 2) / 2 << endl;输出的结果就是3.0/2=1.5