我在c中编写一个简单的函数,它将返回2个浮点值的中间值。
我的功能如下:
float mid(float a, float b) {
return (a + b)*0.5;
}
问题是这个功能总是会产生0.000000。我正在使用以下方法检查:
printf("%f", mid(2,5))
这将打印0.000000。
但是,如果我这样做:
printf("%f", (2+5)*0.5)
这将打印3.5,这是正确的。
如何解决此问题?
答案 0 :(得分:8)
功能很好。例如,这个小片段输出正确。
#include <stdio.h>
#include <string.h>
float mid(float a, float b); //declaration here
int main(void)
{
printf("%f\n", mid(2,5));
return 0;
}
float mid(float a, float b) {
return (a + b)*0.5;
}
你可能遇到的问题是,你没有像我一样添加mid()
的声明,并且编译器认为它返回隐式int
,这会导致问题。
答案 1 :(得分:2)
这应该有效!但我建议你明确传递双值。
#include <stdio.h>
float mid(float a, float b);
int main() {
printf("%f", mid(2.0, 5.0));
return(0);
}
float mid(float a, float b) {
return (a + b)*0.5;
}