c - 속성 - jsp h3




메인이 여기에 0을 반환하지 않는 이유는 무엇입니까? (2)

나는 독서 중이다.

ISO / IEC 9899 : 201x위원회 초안 - 2011 년 4 월 12 일

5.1.2.2.3 프로그램 종료에서 발견 된

..reaching the } that terminates the main function returns a value of 0. 

main() 에서 return 문을 지정하지 않고 프로그램이 성공적으로 실행되면 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?

실제로 출력 된 문자 수인 printf 반환 값을 반환합니다.


이 규칙은 1999 년 버전의 C 표준에 추가되었습니다. C90에서 반환 된 상태는 정의되지 않습니다.

-std=c99 를 gcc에 전달하여 활성화 할 수 있습니다.

부수적으로 9 문자를 쓴 printf 가 반환 되었기 때문에 흥미롭게도 9가 반환됩니다.







main