- 채점
- 런타임 에러
- 런타임 에러 (NZEC)
NZEC
NZEC는 Non Zero Exit Code의 약자로 프로그램의 exit code가 0이 아닌 경우를 의미합니다. 많은 프로그램과 운영체제는 정상 종료일때만 0을 리턴합니다.
C
C는 void main
을 사용할 수 있습니다. main
함수가 종료될 때, 어떤 값을 리턴할지 알 수 없으니 를 받게 됩니다.
소스 1. 를 받는 소스
void
는 리턴값을 지정할 수 없으니, exit
함수를 이용해서 종료해야 합니다.
소스 2. 소스 1을 를 받지 않게 고친 소스
C언어의 표준은 int main
을 사용하는 것입니다. (C99 표준, 5.1.2.2.1 Program startup 참고) int main
을 사용합시다.
소스 3. int main
을 사용한 C 소스
int main
을 사용하는 경우, return 0
이 없어도 0을 리턴한 것과 같습니다.
C++
소스 4는 main
에서 0을 리턴하지 않았기 때문에, 런타임 에러를 받게 됩니다.
소스 4. main
에서 0을 리턴하지 않은 C++ 소스
소스 5는 0을 리턴하면서 종료하지 않았기 때문에, 런타임 에러를 받게 됩니다.
소스 5. exit(1);
로 종료한 C++ 소스
Java
소스 6은 1을 리턴하면서 종료했기 때문에, 런타임 에러를 받게 됩니다.
소스 6. 1을 리턴하면서 종료하는 Java 소스
Java의 경우 System.exit(0);
와 같이 0으로 종료하지 않아도, 알아서 0을 리턴하면서 종료합니다. 소스 7은 System.exit(0);
을 호출하지 않았지만, 정상적으로 0을 리턴하면서 종료하는 소스입니다.
소스 7. 0을 리턴하면서 종료하는 Java 소스
Python
Python도 Java와 마찬가지로 별도의 처리를 하지 않으면 알아서 0을 리턴하면서 종료합니다.
소스 8. 1을 리턴하면서 종료하는 Python 소스
소스 9. 0을 리턴하면서 종료하는 Python 소스
그 외
Exit code가 0이 아니더라도, 런타임 에러 이유를 잡아내지 못하는 경우 일부는 NZEC로 런타임 에러 이유를 보여주고 있습니다.