Właśnie czytałem
ISO / IEC 9899: Projekt Komisji 201x - 12 kwietnia 2011 r
w którym znalazłem w punkcie 5.1.2.2.3 Zakończenie programu
..reaching the } that terminates the main function returns a value of 0.
oznacza to, że jeśli nie określisz żadnej instrukcji return w main()
i program zostanie uruchomiony pomyślnie, to w nawiasie zamykającym} main zwróci 0.
Ale w poniższym kodzie nie określam żadnej instrukcji return, ale nie zwraca ona 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);
}
skompilować
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
samodzielnie (dla wersji 4.6.2) kompiluje język bardzo podobny, ale nie całkiem podobny do C. Kompiluje GnuC89 - język „luźno” oparty na C89.
return
wyciągu w sum()
są niepotrzebne. int main()
powinno być int main(void)
.