IT/네이버지식인

[지식인]c언어 기초 질문

송시 2022. 5. 28. 23:33
728x90

질문자는 C언어에 대한 질문이지만 이 리턴 값이라는게 리눅스/유닉스 시스템에서도 잘 사용된다.

 

쉘 스크립트라면 앞선 명령 결과에 따른 분기를 위해서도 사용되고, 현재의 상태에 대한 정보를 제공해주기도 한다.

 

처음 C 언어를 공부했던 고등학생 시절엔 항상 return 0; 으로만 외워서 적는 녀석이 였는데, 이제 나도 성장했나보다.

 

 

질문

int main(void)
{
    int n;
    printf("출력할 개수:");
    scanf_s("%d",&n);
    if(n<1)
    {
        printf("1이상 입력\n");
        return -1;  
    }
    return 0;
보통 0과 0 아닌 숫자로 리턴값이 참과 거짓을 이루는 걸로 아는데 return -1부분은 어떻게 해석해야하는
건가요?
그냥 -1이 아니라 다른 숫자로 반환해도 상관이 없는건가요??

 

답변

우선 return 값으로는 뭐든 리턴할 수 있습니다.

그래서 알고 계신 것 처럼 참과 거짓으로 이루어진 true or false 의 방법으로 가능 합니다.

다만 0 외엔 거짓이다라는 것은 상황에 따라 다르지만 0 외엔 false 다 라는 의미로 리턴을 사용하는건 아닙니다.

일반적으로 통용해서 사용하는 규칙이 있는데,

그것은 프로그램이 종료 될때 0 이라는 값으로 리턴하면 정상 종료 라고 이해하고 있고,

0 < 리턴값 은 실행은 되었으나, 무엇인가 문제가 있음을 표현합니다.

그런데 개발자에 따라 이러한 리턴값을 얼마든지 그에 알맞게 사용가능하나, 보편적으로 사용되고 있는 숫자들이 있어

자칫 잘못하면 프로그램의 리턴값에 의해 다른 사람이 보고 잘못이해할 가능성이 생기니다.

어쨌든 앞서 설명한 것처럼 보편적으로 사용되고 있는 숫자중 하나가 -1 입니다.

일반적으로 -1 은 에러 상황을 의미합니다.

그러나, 이건 그냥 여태까지 개발자나 엔지니어들이 암묵적으로 사용하는 방법이며,

0은 정상 -1은 비정상으로 하자는 것은 권고 사항이지, 반드시 따라야하는 것은 아닙니다.

그래서 return 값에는 어떠한 값도 들어갈 수 있으며, 개발자의 의도에 따라 return 0을 비정상으로 사용할 수 있습니다.

다만 이렇게 보편적인 암묵적으로 사용되어왔던 것을 바꾸고 싶으시다면, 어떠한 라이브러리의 임포트 없이 손수 다 직접 개발하셔서 리턴값을 사용하시면 됩니다.

C언어에서 사용되는 거의 모든 라이브러리 함수들이 정상 종료를 0으로 리턴할테니 말이죠..

 

https://kin.naver.com/qna/detail.naver?d1id=1&dirId=104&docId=402974708&page=1#answer3

728x90