Je lisais juste
Projet de comité ISO / CEI 9899: 201x - 12 avril 2011
dans lequel j'ai trouvé sous 5.1.2.2.3 Résiliation du programme
..reaching the } that terminates the main function returns a value of 0.
cela signifie que si vous ne spécifiez aucune instruction return dans main()
, et si le programme s'exécute avec succès, alors à l'accolade fermante} de main renverra 0.
Mais dans le code suivant, je ne spécifie aucune déclaration de retour, mais il ne renvoie pas 0
#include<stdio.h>
int sum(int a,int b)
{
return (a + b);
}
int main()
{
int a=10;
int b=5;
int ans;
ans=sum(a,b);
printf("sum is %d",ans);
}
compiler
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
par lui-même (pour la version 4.6.2) compile un langage très similaire mais pas tout à fait semblable à C. Il compile GnuC89 - un langage "vaguement" basé sur C89.
return
instruction dans sum()
sont inutiles. int main()
devrait être int main(void)
.