Saya baru saja membaca
ISO / IEC 9899: 201x Panitia Draft - 12 April 2011
di mana saya temukan di bawah 5.1.2.2.3 Penghentian program
..reaching the } that terminates the main function returns a value of 0.
ini berarti jika Anda tidak menentukan pernyataan pengembalian apa pun di main()
, dan jika program berjalan dengan sukses, maka pada tanda kurung kurawal} dari main akan mengembalikan 0.
Tetapi dalam kode berikut saya tidak menentukan pernyataan pengembalian apa pun, namun tidak mengembalikan 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);
}
menyusun
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
dengan sendirinya (untuk versi 4.6.2) mengkompilasi bahasa yang sangat mirip tetapi tidak persis seperti C. Ia mengkompilasi GnuC89 - bahasa "secara longgar" berdasarkan C89.
return
pernyataan di sum()
tidak perlu. int main()
seharusnya int main(void)
.