공부하자/C언어

C언어 문법 공부 7장 [switch문]

YoBot 2016. 11. 20. 16:17


이번 강좌에서는 프로그램 흐름제어에 대해 알아보겠습니다.

프로그램 흐름 제어란 실제 프로그램에서 가장 중요한 부분으로 어떤 조건이 만족될때 어떤 부분을 실행하거나 어떤 특정 부분을 반복하는 기능을 수행하도록 프로그램의 흐름을 제어하는 것을 말합니다.


C에서는 프로그램 흐름 제어를 위해 많은 방법을 제공합니다.


그럼 그것들을 하나씩 알아보죠. 


2. switch문


이번엔 switch문에 대해 알아 보죠.

switch문은 어떤 특정한 변수 또는 식의 값에 따라 특정 부분을 실행하는 것 입니다.

기본적인 사용법은


switch(식){


case 값A:


break;


case 값B:


break;

이렇습니다.


여기서 식에는 상수, 변수, 수식 어느것도 다 들어갈수 있습니다.

만약 식의 값이 값A이면 case 값A:에서 break가 나올때까지 실행하고 식의 값이 값B이면 case 값B:에서 break가 나올때까지 실행합니다.


예를 들어 보죠 /* 파일 이름 : C7-6.C 프로그램 내용 : switch문 예제.. */


#include <stdio.h>


void main(){


int a=1;


switch(a){


case 1:

printf("A = 1\n");

break;

case 2:

printf("A = 2\n");

break;

}

이걸 실행하면 A = 1이 출력됩니다.

이유는 a가 1이기 때문에 case 1:부터 break가 나올때 까지 실행하면 그게 출력되기 때문이죠.

여기서 break는 중요합니다.


만약 case 1:에 break가 없다면 /* 파일 이름 : C7-7.C 프로그램 내용 : switch문 예제.. */


#include <stdio.h>

void main(){


int a=1;


switch(a){


case 1:

printf("A = 1\n");


case 2:

printf("A = 2\n");

break;

}

이렇게 되어 있다면 결과는 어떻게 될까요?

break가 가장 밑에 있으므로. 거기까지 실행해서 A = 2까지 출력이 되게 됩니다.


만약 break가 하나도 없다면 switch문이 끝날때까지의 모든 문장을 실행합니다.

그러므로 break를 빼먹으면 절대로 않되죠.

어떤 if문은 switch문으로 쓰면 더 간결해 지는데


예를 들어 다음과 같은 프로그램. /* 파일 이름 : C7-8.C 프로그램 내용 : if문 예제. */


#include <stdio.h>

void main(){


int a=4;


if(a==1) printf("One\n");

else if(a==2) printf("Two\n");

else if(a==3) printf("Three\n");

else if(a==4) printf("Four\n");

else if(a==5) printf("Five\n");


이런 프로그램은 switch문으로 고치는게 보기에 쉽습니다.


switch문으로 고치면 /* 파일 이름 : C7-9.C 프로그램 내용 : switch문 예제. */


#include <stdio.h>

void main(){


int a=4;


switch(a){


case 1:


printf("One\n"); break;


case 2:


printf("Two\n"); break;


case 3:


printf("Three\n"); break;


case 4:


printf("Four\n"); break;


case 5:


printf("Five\n"); break;


}

보기가 좀 쉽워졌죠?


즉 하나의 변수를 값 별로 특정 문장을 실행할땐 if문보다 switch문이 더 좋다는 것이죠.

이렇게 switch문은 if문을 대신할수도 있는데, if문의 else문..즉.. 아무것에도 해당하지 않을 때 실행하는 부분은 어떻게 만들까요?

이건 default라는 걸 사용해 만듬니다.


사용법은 

switch(식){

case 값A:

break;


case 값B:

break;


default:

break;

이런 식으로 씀니다


만약 식이 어떤 값에도 해당하지 않으면 default아래에 나오는 것들을 실행해 주죠..


예제를 봅시다. /* 파일 이름 : C7-10.C 프로그램 내용 : switch문 예제. */


#include <stdio.h>

void main(){


int a=4;


switch(a){


case 1:

printf("One\n"); break;


case 2:

printf("Two\n"); break;


case 3:

printf("Three\n"); break;


default:

printf("Another value\n"); break;


}

}


이 프로그램의 결과로는 Another value 가 출력되겠죠?

a가 어떤 값에도 해당하지 않으니.. 이정도로 switch문의 설명도 마치도록 하죠.