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로 런타임 에러 이유를 보여주고 있습니다.