在C中编写函数时返回浮点值

use*_*820 3 c floating-point

我在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,这是正确的.

我该如何解决这个问题?

Yu *_*Hao 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;
}
Run Code Online (Sandbox Code Playgroud)

你可能遇到的问题是,你没有mid()像我那样添加声明,编译器认为它返回隐式int,这会导致问题.