Skip to main content
C switch statement

C언어 조건문 (Switch)

switch 기본 구조

만약 여러 옵션이 있고 그중에 한 번에 하나만 선택해야 할 때 switch를 사용하면 됩니다.

switch는 기본적으로 다음과 같은 형태입니다.

switch(조건문)
{
    case 1:
    	명령문1;
    	break;
    case 2:
    	명령문2;
    	break;
    case 3:
    	명령문3;
    	break;
    case 4:
    	명령문4;
   	    break;
    default:
   	    디폴트 명령문;
    	break;
}

보시다시피 여러 옵션(1, 2, 3, 4 그리고 default)이 있고 조건문의 리턴값에 따라  오직 하나의 명령문만 실행됩니다.

조건문의 리턴값은 정수값이고 case에 정의된 옵션 또한 정수값으로 정의합니다 이후 리턴값과 매치되는 옵션(case)의 명령문만 실행됩니다.

여기서 default 항목은 만약 옵션(case)과 매치되는 항목이 없다면 기본으로 실행되는 명령문을 정의할 수 있습니다.

switch 사용 기본 규칙

  1. 조건문에는 정수 또는 정수를 리턴할 수 있는 변수여야 합니다.
  2. case의 옵션값은 유일해야 합니다.
  3. 각 case의 끝은 세미콜론(;)으로 끝나야 합니다.
  4. 각 case의 명령문 구간은 C언어 문법을 따르는 코드이어야 합니다.

switch 사용 시 주의할 점

  1. switch 조건문이나 case의 옵션은 오직 정수값만 처리합니다. 실수값(floating), 문자열(string), 문자(char) 등은 취급하지 않습니다.
  2. break은 명령문 구간의 끝을 나타내며 switch 실행을 끝냅니다. 만약, break가 없다면 break을 만날 때까지 매치된 case(옵션) 이후의 모든 명령문이 실행됩니다.
  3. default는 조건문과 매치된 case(옵션)가 없으면 실행됩니다. default 항목은 switch 내 어디든 위치할 수 있으며 또한 생략 가능합니다.
  4. 중첩 switch도 가능하지만, 소스 코드의 복잡함과 코드를 읽는데 어려움을 일으켜 추천하지 않습니다.
int i = 1;
switch(i)
{
    case 1:    
        printf("A");        // No break
    case 2:
        printf("B");        // No break
    case 3:
        printf("C");
        break;
}

OUTPUT
A B C

예를 들어 위의 코드는 case 1, case 2 명령문 구간의 break가 생략되었습니다. 그리고 조건문에 매치된 case는 제일 처음의 case 1입니다. 하지만 break가 생략되었기에 break를 만날때까지 그 이후의 모든 명령문이 실행됩니다.

default는 조건문과 매치된 case(옵션)가 없으면 실행됩니다. default 항목은 switch 내 어디든 위치할 수 있으며 또한 생략 가능합니다.

예제:

#include<stdio.h>
void main( )
{
    int a, b, c, choice;
    while(choice != 3)
    {
        /* 가능한 입력값 출력 */
        printf("\n 1. 1은 더하기");
        printf("\n 2. 2는 빼기");
        printf("\n 원하는 번호를 눌러주세요\n");
        
        /* choice변수에 유저 입력값 저장 */
        scanf("%d", &choice);
        
        switch(choice)
        {
            case 1:
                printf("두개의 숫자를 입력하세요\n");
                scanf("%d%d", &a, &b);
                c = a + b;
                printf("%d", c);
                break;
            case 2:
                printf("두개의 숫자를 입력하세요\n");
                scanf("%d%d", &a, &b);
                c = a - b;
                printf("%d", c);
                break;
            default:
                printf("잘못된 입력을 하였습니다.");
                printf("\n 계속하시려면 3을 제외한 아무 숫자를 입력하세요\n");
        }
    } 
} 

if와 switch의 차이점

  • if는 조건문에 float을 사용할 수 있지만, switch는 오직 정수만 가능합니다.
  • if는 조건문에 관계연산자(<, >, == etc) 사용이 가능하지만, switch에는 사용할 수 없습니다.
<< 다음 혼자 공부하는 C언어 이전 >>

One thought to “C언어 조건문 (Switch)”

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다