Solo estaba leyendo
ISO / IEC 9899: Borrador del Comité 201x - 12 de abril de 2011
en el que encontré en 5.1.2.2.3 Terminación del programa
..reaching the } that terminates the main function returns a value of 0.
significa que si no especifica ninguna declaración de retorno en main()
, y si el programa se ejecuta correctamente, en la llave de cierre} de main devolverá 0.
Pero en el siguiente código no especifico ninguna declaración de devolución, pero no devuelve 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 sí mismo (para la versión 4.6.2) compila un lenguaje muy similar pero no del todo parecido a C. Compila GnuC89 - un lenguaje "libremente" basado en C89.
return
declaración en sum()
son innecesarios. int main()
debería ser int main(void)
.