C11 기준


1. exit/_Exit를 통해 끝내면 프로그램이 종료되면서 status code를 보낼 수 있음.

2. 그렇지만 main()의 반환타입이 int나 그에 호환되는 타입이면 main()의 return value로 exit 한 것처럼 처리됨

3. 반환 값은 0, EXIT_SUCCESS, EXIT_FAILURE 3가지가 있고 (나머지 값은 implementation-defined), 0을 반환하는 경우 EXIT_SUCCESS와 동일하게 처리

4. 만약 main이 return을 만나지 않고 종료됬다면 return 0처럼 처리
이 때, main의 반환타입이 int랑 호환이 안 되는 타입이면 unspecified.


결론. (return 0, return EXIT_SUCCESS, return 사용 안 함) 셋 다 맞으니까 고민하지 말고 편한거 쓰자


참고.

5.1.2.2.3 Program termination

7.22.4.4 The exit function