Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 switch 문 완벽 정리 – 기본 문법부터 실전 예제까지

C 언어에서 switch 문은 여러 가지 선택지 중 하나를 골라야 할 때 사용하는 제어문입니다. switch는 주어진 값을 정수 또는 문자 상수 목록과 차례대로 비교하며, 일치하는 값(case)을 찾으면 그 값에 연결된 문장(들)을 실행합니다.

switch 문의 기본 문법

switch 문의 기본 구조는 아래와 같습니다.

switch (expression){
    case value1 : stmt1;
       break;
    case value2 : stmt2;
       break;
    - - - - - -
    default : stmt-x;
}

동작 알고리즘

switch 문의 동작 흐름을 단계별로 살펴보면 다음과 같습니다.

Step 1: 변수를 선언한다.
Step 2: 표현식(expression) 변수를 입력받는다.
Step 3: switch(expression) 평가
    값 1이 선택되면 : stmt 1 실행 후 break (switch 블록 탈출)
    값 2가 선택되면 : stmt 2 실행 후 break
    값 3이 선택되면 : stmt 3 실행 후 break
    ...
Default : 일치하는 값이 없으면 stmt-x 실행;

주요 특징

  • break 문의 역할: 각 case 끝의 break는 switch 블록을 즉시 빠져나가게 합니다. break가 없으면 일치하는 case 이후의 모든 문장이 연달아 실행되는 fall-through 현상이 발생합니다.
  • default 절: 어떤 case와도 일치하지 않을 때 실행되며, 생략할 수 있습니다.
  • 사용 가능한 자료형: switch의 표현식에는 정수형(int, char 등)만 사용할 수 있으며, float나 double은 허용되지 않습니다.

예제 1: 숫자 판별 프로그램

다음 C 프로그램은 switch 문의 기본적인 사용 방법을 보여줍니다.

#include<stdio.h>
main ( ){
    int n;
    printf ("enter a number");
    scanf ("%d", &n);
    switch (n){
       case 0 : printf ("zero");
          break;
       case 1 : printf ("one");
          break;
       default : printf ("wrong choice");
    }
}

실행 결과

enter a number
1
One

입력값이 1이므로 case 1에 해당하는 "one"이 출력된 것을 확인할 수 있습니다.

예제 2: 학생 성적 판별 프로그램

이번에는 문자(char) 값을 조건으로 사용하는 switch 문 예제입니다. 학생의 성적 등급을 입력받아 등급에 맞는 결과를 출력합니다.

#include<stdio.h>
int main(){
    char grade;
    printf("Enter the grade of a student:\n");
    scanf("%c",&grade);
    switch(grade){
       case 'A': printf("Distinction\n");
          break;
       case 'B': printf("First class\n");
          break;
       case 'C': printf("Second class \n");
          break;
       case 'D': printf("Third class\n");
          break;
       default : printf("Fail");
    }
    printf("Student grade=%c",grade);
    return 0;
}

실행 결과

Run 1:
Enter the grade of a student:A
Distinction
Student grade=A

Run 2:
Enter the grade of a student:C
Second class
Student grade=C

첫 번째 실행에서는 'A'를 입력해 "Distinction"이 출력되었고, 두 번째 실행에서는 'C'를 입력해 "Second class"가 출력되었습니다. 이처럼 switch 문은 if-else if 문보다 코드가 간결하고 가독성이 좋아, 여러 분기 조건을 처리할 때 널리 활용됩니다.