Ich habe gerade gelesen
ISO / IEC 9899: 201x Ausschussentwurf - 12. April 2011
in dem ich unter 5.1.2.2.3 Programmbeendigung gefunden habe
..reaching the } that terminates the main function returns a value of 0.
Dies bedeutet, dass wenn Sie keine return-Anweisung in angeben main()
und das Programm erfolgreich ausgeführt wird, in der schließenden Klammer} von main 0 zurückgegeben wird.
Aber im folgenden Code gebe ich keine return-Anweisung an, aber es gibt keine 0 zurück
#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);
}
kompilieren
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
selbst (für Version 4.6.2) kompiliert eine Sprache, die C sehr ähnlich, aber nicht ganz ähnlich ist. Sie kompiliert GnuC89 - eine Sprache, die "lose" auf C89 basiert.
return
Anweisung in sum()
sind nicht erforderlich. int main()
sollte sein int main(void)
.