[c언어 기초]

우리가 아는 C언어

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

조건문3

switch ~ case에 대해서

switch ~ case

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

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

#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의 변형

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 자세히 보기