我写了一个简单的程序来查找3个数字的Sum,average,max和最小数。 它允许用户输入三个(整数)数字并返回总和,平均值,最大值和最小值。 它没有错误,只有警告。这是我的源代码:
main.c中:
#include <stdio.h>
int main()
{
int num1, num2, num3, sum, max, min, avg;
printf("Enter Three \"Integer\" Numbers:");
scanf("%i%i%i", &num1, &num2, &num3);
sum = summation(&num1, &num2, &num3);
avg = average(&sum);
max = max_val(&num1, &num2, &num3);
min = min_val(&num1, &num2, &num3);
printf("Sum: %i Avg: %i MAX: %i MIN: %i", sum, avg, max, min);
return 0;
}
int summation(int *n1, int *n2, int *n3)
{
int s;
s = *n1 + *n2 + *n3;
return s;
}
int average(int *s)
{
int a;
a = *s / 3;
return a;
}
int max_val(int *n1, int *n2, int *n3)
{
int MAX;
if (*n1 > *n2) MAX = *n1;
else if (*n2 > *n3) MAX = *n2;
else MAX = *n3;
return MAX;
}
int min_val(int *n1, int *n2, int *n3)
{
int MIN;
if (*n1 < *n2) MIN = *n1;
else if (*n2 < *n3) MIN = *n2;
else MIN = *n3;
return MIN;
}
我认为不需要创建头文件,因为所有函数都是“int”类型。
编译本时
gcc main.c -o test
它说
main.c: In function 'main':
main.c:34:5: warning: implicit declaration of function 'summation' [-Wimplicit-function-declaration]
为什么会出现此警告?我在该声明中找不到任何错误。 那是什么?
答案 0 :(得分:33)
summation
和其他函数在之后定义,它们在main
中使用,因此编译器猜测了它的签名;换句话说,假设隐式声明。
您应该在使用之前声明该功能并清除警告。在C99规范中,这是一个错误。
在 main
之前移动函数体,或在main
之前包含方法签名,例如:
#include <stdio.h>
int summation(int *, int *, int *);
int main()
{
// ...