Sadece okuyordum
ISO / IEC 9899: 201x Komite Taslağı - 12 Nisan 2011
5.1.2.2.3 Program sonlandırma altında bulduğum
..reaching the } that terminates the main function returns a value of 0.
bu, içinde herhangi bir return ifadesi belirtmezseniz main()
ve program başarılı bir şekilde çalışırsa, main'in kapanış parantezinde} 0 döndürür anlamına gelir.
Ancak aşağıdaki kodda herhangi bir dönüş ifadesi belirtmiyorum, ancak 0 döndürmüyor
#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);
}
derleme
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
kendi başına (4.6.2 sürümü için) çok benzer ancak C'ye pek benzemeyen bir dili derler. GnuC89'u C89'a dayalı "gevşek" bir dil olan GnuC89'u derler.
return
ifadesi in sum()
gereksizdir. int main()
olmalıdır int main(void)
.