본문 바로가기
개발 공부/C언어

#4 C언어 main에서 return 0, return -1 의 뜻

by 반달bear 2022. 7. 31.
반응형

 

열혈 c 프로그래밍 Part01 도전 5 답안

문제 : 10개의 소수(Prime Number)을 출력하는 프로그램을 작성해보았습니다.

return 0의 뜻은 제일 아래에 있음

 

#include<stdio.h>

int main(){
    int PrimeNum; //소수 저장 변수
    int turn=0; //소수 개수 세는 변수


    for (int i=2;i<30;i++){  //소수의 가능성 있는 수를 돌리는 반복함수
        PrimeNum=i;     // 소수의 가능성이 있는 수를 일단 PrimeNum에 넣어준 후 
                        //아래 반복문에서 합/불을 결정한다

        for(int j=2;j<i;j++){   //반복문 1번 설명은 아래에
            if((i%j)==0)    //조건문 1번 설명은 아래에
                PrimeNum=0;
        }


        if(PrimeNum!=0){   //소수의 개수 세는 조건문   
            turn++;
            printf("%d ",PrimeNum);
        }
        if(turn == 10) 
            return 0;   //설명은 아래에 
    }

    
}
 

반복문 1번

  • 반복문 1번을 설정할 때 제일 신경 쓴건 i<j의 설정이었는데 모든 수는 자기 자신으로 나누어질 수 밖에 없음으로 i<j로 설정했습니다.

 

조건문 1번

  • 이 문제를 풀면서 '~~로 밖에 나눠지지 않는다'는 구절이 매우 중요하다는 걸 깨달았습니다. 이때는 여집합의 개념을 사용하는게 쉽습니다.
  • 소수는 1과 자기 자신으로'만' 나누어 질 수 있기 때문에 '1과 자기자신의 여집합에' 집중해서 다른 수로 나누어진다면 소수의 후보에서 탈락시켜야 합니다.

 

return 문

  • 원래는 return을 제일 아래에 쓰고 break문을 사용했습니다.
  • 조금더 나은 코딩을 하려고 생각해보니 return 자체가 1.값의 반환도 되지만 2.함수의 종료를 뜻하기도 하다는게 떠올랐습니다.
  • main함수 return 0;은 해당 함수를 정상적으로 끝내고서 운영체제에게 기술한 값을 반환하고 현재 실행중인 해당 함수를 벗어나겠다는 뜻입니다. 그중에서도 0을 return하는 것은 함수를 성공적으로 끝냈다는 의미라고 합니다.
  • return -1로 -1를 반환할 때도 있는데 보통 이럴때는 에러를 뜻하는 것이라고 합니다.
  • -1를 return 하나 0을 return 하나 프로그램에 특정 함수를 전달하는 것은 아닙니다 단지 프로그래머들끼리 -1는 에러 0은 성공적인 프로그램 종료라는 약속을 했기에 관습적으로 그렇게 사용하는 것입니다.
  • 즉 break;와 return 0;은 의미 중첩이기에 return 0;을 사용하는 것이 낫다는 판단을 했습니다.

 

반응형

댓글