[c언어 기초]

우리가 아는 C언어

[c언어 기초] 우리가 아는 C언어

조건문3

switch ~ case에 대해서

switch ~ case

switch ~ case는 if ~ else if ~ else와 비슷한 기능을 하는 구조로 지정된 변수의 값에 따라 다른 명령을 실행할 수 있게 해줍니다.

아래의 코드를 직접 작성하고 실행해 봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
main()
{
char word;
printf("영어 소문자를 입력하세요");
scanf("%c", &word);
switch(word)
{
case 'a':printf("모음");break;
case 'e':printf("모음");break;
case 'i':printf("모음");break;
case 'o':printf("모음");break;
case 'u':printf("모음");break;
default:printf("자음");
}
}

실행결과

위 프로그램을 실행하면 a,e,i,o,u를 제외한 문자는 '자음'을 출력합니다.

  • 4행과 6행에서 문자 변수 word의 값을 지정해 줍니다.
  • 7행의 switch(word)는 word의 변수값에 따라 결과를 나타내겠다는 뜻입니다. 즉, word의 값에 따라 여러가지의 다른 결과를 출력하죠.
  • 9~13행에서 case 다음에 오는 값이 7행의 word의 값과 같다면 해당 case의 명령이 실행되는데, 콜론( : )이후의 명령이 실행됩니다.
  • braek는 switch ~ case명령을 빠져나가는 종료 명령입니다.
  • default 문장을 만나면 braek는 무조건 실행됩니다. 

switch ~ case의 형식

switch (조건식){
case 값 1: 조건식이 값 1일 때 실행되는 명령문; break;
case 값 2: 조건식이 값 2일 때 실행되는 명령문; break;
::
default:조건식의 값이 case 값에 없을 경우 맨마지막에 실행되는 명령문;
}

braek의 역활

break는 case를 처리하는 부분에서 위에서 아래로 실행하던 흐름을 멈추고 switch ~ case를 빠져나갈때 사용됩니다. 실제로 9~13행의 break명령을 제거하고 실행한 후, 모음’u’을 입력하면 아래와 같은 결과를 볼 수 있죠.
 
 
이것은 13행의 case가 실행되면서 ‘모음’이 출력되고 switch를 종료하는 명령이 없어 아래의 case 값을 비교하다가 결국엔 14행의 default까지 실행되므로 ‘자음’더 출력됩니다.

switch ~ case의 변형

1
2
3
4
5
6
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':printf("모음");break;
default:printf("자음");

위 코드와 같이 같은 명령을 실행할 때 위의 코드를 생략하고 마지막에만 코드를 써주어 더 간단하게 만들 수 있습니다. 

if와 switch의 차이점

if ~else와 switch ~ case는 같은 조건문으로서 개념이 비슷하지만 진행방식에서 큰 차이가 있습니다.
 
  • if문은 모든 비교 연산(조건설정)이 가능하지만 switch문은 값에 의해서만 다른 처리가 가능합니다.
  • if문은 블록( { } )으로 영역을 구분하지만 switch문은 case와 break로 영역을 구분합니다.
  • if문은 else문으로 switch문은 default문으로 그 외 나머지 경우를 처리합니다.
  • if문은 모든 변수형을 사용할 수 있지만, switch문은 실수형을 사용할수 없습니다.

 

다음 토픽에서는 조건문을 이용한 문제를 풀어봅시다.

 

댓글

댓글 본문
  1. 호두
    고맙습니다.
  2. 호두
    고맙습니다.
버전 관리
life knowledge
현재 버전
선택 버전
공동공부
graphittie 자세히 보기