J'ai écrit un programme simple pour trouver la somme, le nombre moyen, le plus grand et le plus petit de 3 nombres. Il permet à l'utilisateur de saisir trois nombres (entiers) et de renvoyer la somme, la moyenne, le max et le min. Il n'a pas d'erreurs mais un avertissement. Voici mon code source:
principal 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;
}
Je pense qu'il n'est pas nécessaire de créer un fichier d'en-tête car toutes les fonctions sont de type "int".
Quand je compile ceci
gcc main.c -o test
Ça dit
main.c: In function 'main':
main.c:34:5: warning: implicit declaration of function 'summation' [-Wimplicit-function-declaration]
Pourquoi cet avertissement? Je ne trouve rien de mal dans cette déclaration. Qu'est-ce que c'est?
summation
et vos autres fonctions sont définies après elles sont utilisées dans main
, et donc le compilateur a fait une supposition sur sa signature; en d'autres termes, une déclaration implicite a été supposée.
Vous devez déclarer la fonction avant de l'utiliser et vous débarrasser de l'avertissement. Dans la spécification C99, il s'agit d'une erreur.
Soit déplacer les corps de fonction avantmain
, soit inclure des signatures de méthode avant main
, par exemple:
#include <stdio.h>
int summation(int *, int *, int *);
int main()
{
// ...