C언어 Switch 조건문 사용법
반응형

기본 구조

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

컨디션에는 if와 같은 조건문이 들어가고 그 리턴 값에 따라 만족하는 case의 명령문이 실행됩니다. 리턴 값은 정수 값입니다.

case는 정수 값으로 정의합니다. 컨디션의 리턴 값과 매치되는 case의 명령문을 실행합니다. 

default에는 매치되는 값이 없을 경우 실행되는 명령문을 정의합니다.

switch 기본 규칙

  • 컨디션는 정수를 리턴하는 코드여야 합니다.
  • 각 case는 유일해야 합니다.
  • 각 case는 세미콜론(;)으로 끝나야 합니다.
  • 각 case의 명령문에는 C언어 문법을 따르는 코드이어야 합니다.

switch 주의할 점

  • switch 컨디션이나 case는 오직 정수 값만 처리합니다. 실수 값(floating), 문자열(string), 문자(char) 등은 올 수 없습니다.
  • default는 어디든 위치할 수 있으며 또한 생략 가능합니다. 통상 case의 제일 마지막에 위치합니다.
  • 중첩 switch도 가능합니다. 통상 복잡함과 코드를 읽는데 어려움으로 사용하지 않습니다.
  • 각 case의 끝은 break로 끝나야 합니다. 만약, break를 생략하면 break를 만날 때까지 이 후 모든 case의 명령문이 실행됩니다. 
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

위의 코드처럼 break를 생략한 경우 매치된 case의 명령문부터 break를 만날때까지 모든 명령문이 실행됩니다.

예제:

#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언어 이전 >>
반응형