이 코드는 왜 메인함수가 9를 return하는 건지 아시는 분?


ISO/IEC 9899:201x Committee Draft — April 12, 2011에 5.1.2.2.3 Program termination에 보면

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

라고 해서 main()에 특별히 return값을 안정했을 때는 0을 자동으로 return해 준다고 돼 있는데 이 코드는 다른 값을 return합니다.

소스코드

#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 //0이 와야 되는데 9가 나왔음

  • 2016년 02월 01일에 작성됨

조회수 359


1 답변


좋아요
0
싫어요
채택취소하기

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

이 규칙은 1999년 부터 C표준으로 정해졌고, C90까지는 return을 명시하지 않았을 경우 어떤 값이 나올지는 정해게 없기 때문에 그렇습니다.

gcc에 -std=c99로 C99 컴파일러를 지정해 주면 0이 나올 겁니다.

  • 2016년 02월 01일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close