25.1 사용자가 입력한 값에 따라 문자열 출력하기

switchcase를 간단하게 테스트 해보는 방법은 사용자가 입력한 값에 따라 문자열을 출력하는 것입니다.

switch (변수)
{
case 숫자1:
    코드1
    break;
case 숫자2:
    코드2
    break;
default:
    코드3;
    break;
}

다음 내용을 소스 코드 편집 창에 입력하세요.

switch_scanf.c

#define _CRT_SECURE_NO_WARNINGS    // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>

int main()
{
    int num1;

    scanf("%d", &num1);    // 값을 입력받음

    switch (num1)   // num1의 값에 따라 분기
    {
    case 1:         // 1일 때
        printf("1입니다.\n");
        break;
    case 2:         // 2일 때
        printf("2입니다.\n");
        break;
    default:        // 아무 case에도 해당되지 않을 때
        printf("default\n");
        break;
    }

    return 0;
}

소스를 컴파일하여 실행한 뒤 1을 입력하고 엔터 키를 누르세요.

실행 결과

1 (입력)
1입니다.

1을 입력했으므로 "1입니다." 문자열이 출력됩니다. 각자 2와 다른 숫자를 입력하여 switch가 어떻게 동작하는지 살펴봅니다.

switch의 괄호 안에는 먼저 값을 판단할 변수를 지정합니다. 여기서는 scanf로 사용자의 입력을 받은 뒤 switchnum1 변수를 지정했습니다. 그리고 case1일 때, 2일 때 그리고 default로 아무 case에도 해당하지 않을 때 실행할 코드를 지정하였습니다.

switch (num1)    // num1의 값에 따라 분기
{
case 1:    // 1일 때
    printf("1입니다.\n");
    break;
case 2:    // 2일 때
    printf("2입니다.\n");
    break;
default:   // 아무 case에도 해당되지 않을 때
    printf("default\n");
    break;
}

case 다음에는 반드시 값(리터럴)이 와야 하며 변수나 조건식은 올 수 없습니다. 그리고 case에 값을 지정했으면 : (콜론)을 붙여 준 뒤 다음 줄부터 실행할 코드를 입력합니다. 또한, 코드의 마지막에는 break를 입력합니다.

이 코드를 switch 분기문 대신 if 조건문으로 표현하면 다음과 같은 모양이 됩니다.

if (num1 == 1)       // 1일 때
    printf("1입니다.\n");
else if (num1 == 2)  // 2일 때
    printf("2입니다.\n");
else                 // 1도 아니고 2도 아닐 때
    printf("default\n");

if는 첫 조건식 다음에 else if로 다른 조건식을 일일이 지정해줘야 합니다. 즉, 조건식이 바뀌지 않고 값만 바뀔 때는 switch가 적합하며, 값과 조건식이 모두 바뀔 때는 else if가 적합합니다.