본문 바로가기
C, C++/문법 정리

[C언어]조건문을 사용해보자 2 - switch-case문

by hseoy 2020. 4. 24.
반응형

[조건문을 사용해보자 2 - switch-case문]

이전 글에서는 if문과 else문을 사용한 조건분기 구현에 대해서 살펴보았다. 이번에는 switch-case문을 사용해서 이전 글에서 구현했던 등급 채점 프로그램을 재구현해보고자 한다.먼저 switch문이 필요한 이유에 대해서 이해해보자.

이전 글에서 구현했던 등급 채점 프로그램의 기준은 매우 단순했다. 90점 이상, 80점 이상, 70점 이상, 70점 미만에 대해서만 조건을 구성했고 그 결과 4번만 조건문을 작성하면 됐다. 하지만 만약에 좀 더 세밀한 단위로 조건을 작성해야 한다면 어떨까? 0.1, 0.001, 0.0001 단위로 조건을 구성한다면 필요한 조건문의 개수는 매우 매우 많이 늘어나게 될 것이다. 이 경우 코드를 이해하기도 매우 어려워질 뿐더러 우리의 손도 매우 피곤해진다.

그렇기 때문에 조건문의 새로운 구문이 나타나게 되었다. 설명하기 앞서 우리가 구현한 조건분기에서 조건에 대해서 살펴보자. 우리가 사용한 조건은 score >= 90, score >= 80, score >= 70, score < 70이였다. 여기서 우리는 각 조건 사이의 규칙을 한 가지 발견할 수 있다. 바로 score라는 변수 하나의 값에 따라 조건분기가 일어나고 있다는 것이다. C언어는 이렇게 어떠한 값 하나에 따라 조건분기가 일어나고 있을 때 이를 보다 쉽게 표현할 수 있도록 새로운 조건문을 제공하고 있다. 그것이 switch-case문이다.

switch(score/10)
{
    case 9: 
        printf("A\n");
        break;
    case 8:
        prinitf("B\n");
        break;
    case 7:
        printf("C\n");
        break;
    default:
        printf("F\n");
}

if-else 구조로 작성했던 조건문들을 switch-case 구조로 바꾸면 위와 같다. 먼저 score 변수의 10의 자리에 따라 분기하기 때문에 score변수를 10으로 나누었고, 그 값이 각각 9, 8, 7일 때 실행할 코드와 score/10의 값이 9,8,7이 아닐 때 실행할 코드를 작성했다. case문은 switch의 소괄호 안에 있는 값이 case V:에서 V일 때 콜론(:) 아래에 있는 코드를 실행한다는 것을 의미한다. 첫 번째 case문인 case 9:를 보자면 score/10의 값이 9라면 printf("A\n");break;를 실행한다는 것을 의미한다. 여기서 break는 switch문으로부터 벗어나 아래에 있는 코드(다른 case문과 default문)을 실행하지 않겠다는 것을 의미한다. 만약 그 아래의 코드를 계속해서 실행하고 싶다면 break를 지워주면 된다.

switch(score/10)
{
    case 9: 
        printf("A\n");
    case 8:
        prinitf("B\n");
    case 7:
        printf("C\n");
    default:
        printf("F\n");
}

위와 같이 break;를 모두 지워주게 되면 조건을 만족하는 부분부터 그 아래부분을 모두 실행하게 된다. 예를 들어 score/10의 값이 8이라면 B,C,F가 출력되게 되는 것이다. 이를 이용해서 여러 값을 만족할 때 하나의 코드가 실행되도록 구성할 수도 있다.

반응형

댓글