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

时间:2014-10-08 02:16:02

标签: c floating-point

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

如何解决此问题?

2 个答案:

答案 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; 
}