C언어에서 return 0로 종료하는 이유

김태현·2022년 5월 30일

C언어 강의

목록 보기
3/5

c언어에서 기본적인 문법을 배우다보면 return 문에 대해서 배운다.

return 문은 함수가 종료되면서 값을 반환할때 사용하는 문법이다.

return 문 뒤에 반환하고 싶은 값들을 넣는다.

일반적인 함수들은 함수를 호출한 곳에 return문뒤의 값들을 반환한다.
만약 메인함수에서 0이라는 정수값을 반환하는 함수를 호출했다면 그 0이라는 값은 메인함수로 반환한다.

이러한 return문을 배우면서 의문이 생기는 점이 있다.

많은 c언어 문법 책에서 보다보면 main 함수를 작성할 때, 항상 마지막에 return 0; 이라는 절이 추가되있는 것을 확인할 수 있다.

이는 도대체 무슨 의미길래 자꾸 들어가는 걸까? 메인 함수는 도대체 어디에다가 0이라는 값을 반환하는 걸까? return 0를 넣지 않아도 프로그램이 정상적으로 작동할까?

그에대해 알아보겠다.


우선 return 0;를 사용하는 첫번째 이유부터 알아보자.

return 0는 우선 메인함수가 종료된다는 명확한 신호가 된다.
메인 함수가 아무리 복잡하게 구성되어 있더라도 return 0 문장이 등장한다면 그 부분에서 메인함수가 종료된다는 것을 명확하게 알수 있다.

그런데 우리는 return문이 함수를 종료한다는 것을 이미 알고있다.

return 0 라고 칠 필요 없이 return만 쳐도 함수가 종료된다는 것도 알고있다.


그러하면 굳이 길게 return 0라고 칠필요없이 return만 치면 되지 않을까?

이 이유는 두번째 이유에서 확인할 수 있다.

0이라는 값을 반환하는 이유는 무엇일까? 우선 메인함수에서 어떠한 값을 반환할때 이 값이 어디로 반환되는지 알아야 한다.

메인함수에서 반환되는 값은 바로 windows나 Linux 같은 운영체제로 반환된다.


운영체제로 0이라는 값을 반환하는 것은 도대체 무슨 의미가 있을까?

0이라는 값은 프로그램이 정상적으로 에러 없이 종료되었다는 운영체제로 보내는 신호이다.

그래서 운영체제로 0이 반환되면 운영체제에서 프로그램이 정상적으로 종료되었다고 인식하는 것이다.


그렇다면 0이 아닌 다른 값들을 리턴하는 것은 무슨 의미일까?

그것은 때에 따라 다양한 의미를 지니는데, 보통 -1, 1 ,2 와 같은 값들을 반환했을 떄, 무언가 에러가 발생했거나 다른 동작을 했다는 것을 알리는 의미로 쓰이기도 한다.


return 0와 같이 메인함수에서 값을 반환하지 않고 넘어가도 상관없을까?

과거에는 개발자가 에러없이 프로그램이 종료되었다는 것을 알리기위해서 return 0를 사용해야 했다. 하지만 1999년 C99 버전으로 개정된 후부터는 따로 0을 반환해주지 않아도 알아서 프로그램이 잘 종료되었을 떄 메인함수가 0을 반환하게 되었다.


결론

return 0; 문장은 프로그램이 에러 없이 잘 종료되었다는 것을 알리기 위해 들어가는 문장이다.

또한 return 0; 가 들어가지 않아도 에러없이 프로그램이 잘 종료가 되면 main함수에서 알아서 0을 반환하므로 생략 가능하다.


긴글 읽어주셔서 감사합니다. :)

profile
처음에는 웹 frontend 분야에 자신있는, 허나 다양한 분야를 경험하고 배우고자 노력하는 공학자 김태현입니다.

0개의 댓글