Eu só estava lendo
ISO / IEC 9899: 201x Minuta do Comitê - 12 de abril de 2011
em que encontrei em 5.1.2.2.3 Término do programa
..reaching the } that terminates the main function returns a value of 0.
isso significa que se você não especificar nenhuma instrução return em main()
e se o programa for executado com êxito, a chave de fechamento} de main retornará 0.
Mas no código a seguir eu não especifico nenhuma instrução de retorno, ainda que não retorne 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);
}
compilar
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
por si só (para a versão 4.6.2) compila uma linguagem muito semelhante, mas não exatamente como C. Ele compila o GnuC89 - uma linguagem "vagamente" baseada no C89.
return
declaração em sum()
são desnecessários. int main()
deveria ser int main(void)
.