Я просто читав
Проект комітету ISO / IEC 9899: 201x - 12 квітня 2011 року
в якому я виявив під 5.1.2.2.3 завершення програми
..reaching the } that terminates the main function returns a value of 0.
це означає, що якщо ви не вкажете жодного твердження про повернення в main()
, і якщо програма працює успішно, то в кінцевій дузі} основного повернеться 0.
Але в наступному коді я не вказую жодного твердження про повернення, але він не повертає 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);
}
складати
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
сам по собі (для версії 4.6.2) компілює мову, дуже схожу, але не зовсім схожу на C. Він компілює GnuC89 - мову, "вільно" на основі C89.
return
викладі в sum()
не потрібні. int main()
повинно бути int main(void)
.