我在c中编写一个简单的函数,它将返回2个浮点值的中间值.
我的功能看起来像这样:
float mid(float a, float b) {
return (a + b)*0.5;
}
Run Code Online (Sandbox Code Playgroud)
问题是这个函数总是会产生0.000000.我通过使用以下方式检查:
printf("%f", mid(2,5))
Run Code Online (Sandbox Code Playgroud)
这将打印0.000000.
但是,如果我这样做:
printf("%f", (2+5)*0.5)
Run Code Online (Sandbox Code Playgroud)
这将打印3.5,这是正确的.
我该如何解决这个问题?
功能很好.例如,这个小片段输出正确.
#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;
}
Run Code Online (Sandbox Code Playgroud)
你可能遇到的问题是,你没有mid()像我那样添加声明,编译器认为它返回隐式int,这会导致问题.