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
시발 병신언어 어디는 깐깐하고 어딘 널널하고 기준이 없네
C에서도 구현별로 0이랑 널이 같은지도 다르지 않냐?
NULL이 0과 같을 필요는 없지만 암시적 캐스팅으로 NULL이랑 0이랑 캐스팅 됨을 보장해서 if(NULL)같은 구문이 표준을 준수하는 안전한 표현이라고 알고있음
자바합시다 System.exit(0);