因为你的W是double型啊,把5赋给double的变量,要保证精度,只能在后面加0啊,输出也就是5.0了。
return 是把a+b当作int来返回。如果int和float的大小相同,那么结果可以作为float来使用。
(int)(a+b) 不会使a+b有损。
应该是把函数声明成了float 或double
例如:
double five(){return 5;}
结果肯定是浮点数
如果楼主声明的是int或long等整型
那么很可能是将返回值赋给了浮点数
int five(){return 5;}
double a;
a = five();
没有区别。。。
返回的int型,即5,但是code中可能将返回值赋给了float或double型:
int func(int a, float b) {
return int(a+b);
}
...
float res = func(2, 3.21);
printf("%f\n", res); // output: 5.0
有区别,得看a,b 本来是什么类型的;