从函数返回浮点值...(C)

时间:2015-10-18 19:03:43

标签: c function

这是我的代码:

#include <stdio.h>

float aveg(a,b){

        float result;

        result=(a+b)/2;

        return result;
}

int main(void) {

        float a,b,avg;


        printf("first no:  ");
        scanf("%f",&a);
        printf(" %f\n",a);
        printf("second no: ");
        scanf("%f",&b);
        printf(" %f\n",b);

        avg=(a+b)/2;
        printf("average is:  ");
        printf("%.2f", avg);

        avg=aveg(a,b);
        printf("\n average from function is: ");
        printf("%.2f",avg);
}

这是我的输出......

第一个号码:3  3.000000 第二号:5  5.000000 平均值是:4.00  功能平均值为:537133056.00

有人能解释为什么我从浮动函数中得到这么多不同的数字吗? 我尝试声明这个功能:

float avg(float a, float b);

但是编译器让我犯了错误...... 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

最快的解决方法是添加一个点(将在一秒内解释):

result=(a+b)/2.;

ab都声明为int(默认情况下,因为您没有指定任何类型),因此您的(a+b)会产生一个整数,然后除以另一个整数。

为了使你的除法结果成为一个浮点数,你应该确保至少有一个操作数是float类型,这就是为什么2.中的点(它只是{的简短版本} {1}})。

当然,真正的解决方法是正确声明函数参数的数据类型:

2.0

如果代码中没有其他语法错误,这将有效。