나는 방금 읽고 있었다
ISO / IEC 9899 : 201x위원회 초안 — 2011 년 4 월 12 일
5.1.2.2.3 프로그램 종료에서 발견 한
..reaching the } that terminates the main function returns a value of 0.
에서 return 문을 지정하지 않고 main()
프로그램이 성공적으로 실행되면 main의 닫는 중괄호}에서 0을 반환합니다.
그러나 다음 코드에서는 return 문을 지정하지 않았지만 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와 매우 비슷하지는 않지만 매우 유사한 언어를 컴파일합니다. C89를 기반으로 "느슨하게"언어 인 GnuC89를 컴파일합니다.
return
문에이 sum()
불필요하다. int main()
이어야합니다 int main(void)
.