Pages

Saturday, January 6, 2018

C/C++ 언어 프로그래밍-제어문3

C/C++언어 코딩 복습-제어문 3 (switch case 문)

switch case 문: 앞 장의 다중 if else 문과 유사한 조건형 제어문으로 참/거짓으로 수행문장의 실행을 결정하는 것이 아니라 특정 값에 해당될 때 실행을 하는 형태입니다. 보다 코드가 명확해 질 수 있고 간결해 질 수 있습니다. switch case 문의 구조는 다음과 같습니다.

switch('식'){
case  n1 : '수행문장 1' ;
         break ;
case  n2 : '수행문장 2' ;
         break ;
case  n3 : '수행문장 3' ;
         break ;
default : '수행문장 0' ;
}

- switch 문 다음 괄호 안에 있는 '식' 의 값이 n1 일 때는  '수행문장 1' 을 수행하고 다음 break 문에 의해 switch case 문 밖으로 빠져 나옴니다. 즉 다른 수행문장들은 수행을 안한다는 것입니다. 만약 '식' 의 값이 n2 일 때는  '수행문장 2' 을 수행하고 다음 break 문에 의해 switch case 문 밖으로 빠져 나옴니다.

- 만약 '식' 의 값이 n1, n2, n3 가 아닐 때는 default 뒤에 있는 '수행문장 0' 을 수행합니다. 만약 case 문에 break 문이 없으면 switch 문을 바로 빠져 나오지 않고 break 문을 만날 때 까지 혹은 switch 문을 빠져 나올 때 까지 다음 문장에 있는 수행문장을 수행합니다.

사용예시 :

예제코드

#include <iostream>
using namespace std;

int main() {

     int a, b;
          a = 1 ;
          b = 2 ;

   switch(a){
         case 1 : cout<<" a = 1 ! "<<endl ;
                  break;
         case 2 : cout<<" a = 2 ! "<<endl ;
                  break;
         case 3 : cout<<" a = 3 ! "<<endl ;
                  break;
         default : cout<<" Hi "<<endl ;
                            }

   switch(b){
         case 1 : cout<<" b = 1 ! "<<endl ;
                  break;
         case 2 : cout<<" b = 2 ! "<<endl ;
                  break;
         case 3 : cout<<" b = 3 ! "<<endl ;
                  break;
    default : cout<<" Hi "<<endl ;
                            }

          return 0;
}

실행결과

- 상수형 변수 a, b 에 각각 1 과 2 를 대입합니다. 첫번째 case 문에서 a 의 값이 1 이므로 case 1 에 해당되는 " a = 1 ! " 이 출력되고 break 문을 만나 더이상 출력이 되지 않습니다. b 의 경우 값이 2 이므로 case 2 에 해당되는 " b = 2 !" 이라는 값이 출력됩니다.

- 이번에는 break 문을 제거 하고 실행을 시켜보겠습니다.

예제코드

#include <iostream>
using namespace std;

int main() {

     int a, b;
          a = 1 ;
          b = 2 ;

   switch(a){
         case 1 : cout<<" a = 1 ! "<<endl ;
         case 2 : cout<<" a = 2 ! "<<endl ;
         case 3 : cout<<" a = 3 ! "<<endl ;
         default : cout<<" Hi "<<endl ;
                            }

   switch(b){
         case 1 : cout<<" b = 1 ! "<<endl ;
         case 2 : cout<<" b = 2 ! "<<endl ;
         case 3 : cout<<" b = 3 ! "<<endl ;
    default : cout<<" Hi "<<endl ;
                            }
          return 0;
}

실행결과

- 앞 예제에서 break 문만 제거한 후 실행을 하면 위와 같은 결과를 얻게 됩니다. 먼저 a 의 경우 a 의 값이 1 이므로 case 1 에서 " a = 1 ! " 이 출력이 됩니다. 그런데 break 문이 없어서 다음 수행문 (" a = 2 ! ", " a = 3 ! ", "Hi") 들이 계속 수행됩니다. 그리고 switch 문을 다 수행하고 빠져 나오게 됩니다.

- b 의 경우 case 1 의 수행문은 수행되지 않습니다. 왜냐하면 b 에는 2 라는 값이 대입되어 있기 때문입니다. 그 다음 case 문에서 b 의 값이 2 이기 때문에 " b = 2 !" 이라는 값이 출력되고 break 혹은 switch 문이 종료할 때까지 수행문들을 수행 합니다. 

No comments:

Post a Comment