我可以在具有两个整数参数的函数中 return double 或 float 吗?

Can I return a double or float in a function with two integer parameters?

我想用这个程序中的函数计算数字的平均值,但它不起作用:

#include <stdio.h>
#include <stdlib.h>

int i;
int size = 6;

int main () {
    int arr[6] = {1, 2, 3, 4, 5, 6};

    avg (arr, & size);

    return 0;
}

double avg (int a[], int *n ) {
    int sum = 0;
    double average;

    for (i = 0 ; i < *n ; i++) {
        sum  = sum + a[i];
    }
    average = (double) sum / *n;
    return average;
}

但是如果我用同样简单的 void 函数代替它,它会正常工作:

#include <stdio.h>
#include <stdlib.h>

int i;
int size = 6;

int main () {
    int arr[6] = {1, 2, 3, 4, 5, 6};

    avg(arr, & size);

    return 0;
}

void avg (int a[], int *n) {
    int sum = 0;
    double average;

    for (i = 0 ; i < *n ; i++) {
        sum  = sum + a[i];
    }

    average = (double) sum / *n;
    printf("%lf", average);
}

这两个void函数和简单函数有什么区别?

第一个问题是你在main()中使用它之前没有声明你的函数。在调用之前提供声明或原型。

double avg(int a[], int *n);
int main() { 
...

其次,在第一个实现中,您没有存储函数

的 return 值
avg (arr, & size) ; // useless statement

只需将 return 值存储到一个变量中并打印它,它将按预期工作

double average = avg (arr, & size);
printf("%lf", average);