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

标签 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 函数中得到如此不同的数字吗? 我尝试声明该函数:

float avg(float a, float b);

但是编译器给我带来了错误...... 有什么想法吗?

最佳答案

最快的解决方法是添加一个点(稍后会解释):

result=(a+b)/2.;

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

要使除法结果为浮点型,您应该确保至少有一个操作数是 float 类型,这就是为什么 2. 中的点(其中只是 2.0 的简短版本)。

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

float aveg(float a, float b){

如果您的代码中没有其他语法错误,这将起作用。

关于c - 从函数返回浮点值... (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202005/

相关文章:

Python:如何在 PriorityQueue 中设置 __str__ 函数

c - C 是否提供 API 来以编程方式获取系统上最大可能的并发线程数?

python - 将 numpy 数组传递给 cython 中的 C 函数

javascript - 异步 JavaScript 不允许我的函数返回?

ios - 编写一组执行类似操作的轻击手势识别器的最 Eloquent 方式

javascript - 显示和隐藏 javascript 函数的问题

计算文本文件中出现的所有字符

c - C中Enqueue操作中的无限循环

c - 在 c 中使用信号并从程序中的特定点恢复

c++ - 为什么 "std::is_pointer<std::nullptr_t>::value"等于 false?