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?
gcckendi 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.
returnifadesi in sum()gereksizdir. int main()olmalıdır int main(void).