25.5 switch에서 판별할 수 있는 자료형 알아보기

switch에서 판별할 변수는 정수 자료형만 사용할 수 있고, 실수 자료형(float, double)은 사용할 수 없습니다. 단, 문자 자료형(char)도 정수 자료형이므로 switch에서 사용할 수 있습니다.

switch_char.c

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

int main()
{
    char c1;

    scanf("%c", &c1);     // 값을 입력받음

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

    return 0;
}

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

실행 결과

a (입력)
a입니다.

switch에서 문자 자료형을 사용해도 정확히 동작합니다. 여기서 case에는 숫자 대신 case 'a':처럼 ' ' (작은따옴표)를 사용하여 문자를 지정해줍니다. 단, C 언어에서는 case "Hello":처럼 case에 문자열은 사용할 수 없습니다.