26.7 연습문제: switch 분기문 사용하기

다음 소스 코드를 완성하여 정수 2, 4, 8을 입력했을 때 문자열 "2", "4", "8"이 출력되게 만드세요.

practice_switch.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    int num1 = 0;

    scanf("%d", &num1);

    switch (num1)
    {
    case 1 << _____:
        printf("2\n");
        break;
    case 1 << _____:
        printf("4\n");
        break;
    case 1 << _____:
        printf("8\n");
        break;
    default:
        printf("default\n");
        break;
    }

    return 0;
}

실행 결과

2 (입력)
2

정답

 1
 2
 3

해설

switch 분기문의 case에는 연산자를 사용한 식을 지정할 수 있습니다. 단, 식의 결과는 정수라야 합니다.

여기서는 1을 시프트 연산했을 때 2, 4, 8이 나와야 하는데 각 숫자를 보면 2의 거듭제곱인 것을 알 수 있습니다. 따라서 << 연산자와 1, 2, 3을 지정하면 case에서 2, 4, 8을 처리할 수 있습니다.