티스토리 뷰

리눅스 C-언어 초급과정

6. switch ~ case문

다유데브 2022. 11. 14. 15:21
반응형

1) 목표

  • switch ~ case문 이해하기
  • switch ~ case문에서 사용할 수 있는 변수/값에 대해서 알아보기

2) 설명

switch (변수) {
  case 값1:
    실행문1;
    break;
  case 값2:
    실행문2-1;
    실행문2-2;
    break;
  default:
    실행문3;
    break;
}

    ▶ if문과 같은 제어문입니다. if문은 여러 연산자가 있는 반면,

        switch문은 변수와 case문의 값이 일치(==) 하는 경우 실행문을 실행합니다.
        실행문은  복수개 존재할 수 있고, 실행문 끝에는 반드시 break; 문을 추가 합니다.
    ▶ default 문은 모든 case 문의 값과 일치 하지 않을때 실행됩니다.

3) 예제프로그램

  • vi switch.c
#include <stdio.h>

int main() {
    int nScore = 3;

    switch (nScore) {
        case 1:
            printf("스코어 : 1\n");
            break;
        case 2:
            printf("스코어 : 2\n");
            break;
        case 3:
            printf("스코어 : 3\n");
            break;
        case 4:
            printf("스코어 : 4\n");
            break;
        default:
            printf("스코어 : default\n");
            break;
    }

    return 0;
}

4) 컴파일/실행

~/c-lecture (master ✘)✖✹✭ ᐅ gcc -o switch switch.c
~/c-lecture (master ✘)✖✹✭ ᐅ ./switch
스코어 : 3
~/c-lecture (master ✘)✖✹✭ ᐅ

5) 분석

  • switch문의 변수 nScore 의 값과 case 문의 값과 같은 경우 실행문이 실행됩니다.
    nScore = 3이고 case 값과 같은 경우 "스코어 : 3" 이 출력됩니다. 

  • nScore = 5로 프로그램 수정해서 실행하면  
...
	int nScore = 5;		// 3 -> 5로 수정

       case 문의 값이 5가 없기 때문에 default문이 실행됩니다.

~/c-lecture (master ✘)✖✹✭ ᐅ gcc -o switch switch.c
~/c-lecture (master ✘)✖✹✭ ᐅ ./switch
스코어 : default
~/c-lecture (master ✘)✖✹✭ ᐅ

 

  • nScore = 3으로 수정하고 case 3: break;문을 제거 하면 어떻게 될까요?
...
	int nScore = 3;
...
	case 3:
        printf("스코어 : 3\n");
        // break; 문 제거
	case 4:
        printf("스코어 : 4\n");
        break;
~/c-lecture (master ✘)✖✹✭ ᐅ gcc -o switch switch.c
~/c-lecture (master ✘)✖✹✭ ᐅ ./switch
스코어 : 3
스코어 : 4
~/c-lecture (master ✘)✖✹✭ ᐅ

    nScore = 3 값은 case 3: 가 실행이 되는데 break문이 없기 때문에 다음 case 4: 의 break; 문까지 실행이 됩니다.
    그러니 break;문이 누락되지 않게 조심하세요.

반응형

'리눅스 C-언어 초급과정' 카테고리의 다른 글

8. while문  (0) 2022.11.15
7. for문  (0) 2022.11.14
5. if문  (0) 2022.11.14
4. 변수  (0) 2022.11.11
3. c언어 시작  (0) 2022.11.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함