Stavo solo leggendo
ISO / IEC 9899: 201x Committee Draft - 12 aprile 2011
in cui ho trovato in 5.1.2.2.3 Interruzione del programma
..reaching the } that terminates the main function returns a value of 0.
significa che se non specifichi alcuna istruzione return in main()
, e se il programma viene eseguito correttamente, la parentesi graffa di chiusura} di main restituirà 0.
Ma nel codice seguente non specifico alcuna dichiarazione di ritorno, ma non restituisce 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);
}
compilare
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
da solo (per la versione 4.6.2) compila un linguaggio molto simile ma non proprio come C. Compila GnuC89 - un linguaggio "vagamente" basato su C89.
return
nella dichiarazione sum()
sono inutili. int main()
dovrebbe essere int main(void)
.