switch 구문 C++
목차
switch 구문은 if else 구문과 비슷한 분기문 입니다. if else 로도 똑같은 내용의 코드를 작성할 수 있습니다만, switch 구문이 가독성이 좋은 경우가 있습니다. 예를 들어서 자판기의 버튼에 따라 1번부터 10번까지 메뉴를 선택한다고 하면 if else 문으로는 좀 더 길고 번거로운 코드가 될 수 있습니다. if 1번이 아니면 if else 2번 이 아니면 if else 이런 식으로 가지만 switch 문에서는 case 1, case 2 이런 식으로 작성할 수 있습니다.
하는 일은 같지만 가독성이 차이가 난다는 것은 중요한 부분으로 코드를 들여다 보는 사람에게 유리하게 작성할 수 있습니다.
switch 예제
아래의 예제는 switch 구문입니다. selection 과 case 를 보면 if 문법으로는 if(selection == 1), if else(selection == 2) 이런 식으로 작성되야 하지만 case 1, case 2, case 3 으로 되어 있으니 작성도 쉽고 가독성도 좋습니다. 한가지 유의할 점은 { } 블록은 순차적으로 실행이 됩니다. 그래서 case 1 마다 break 포인트를 설정해야 합니다. break 키워드 없이는 처음 선택한 case 에서 블록의 끝까지 실행합니다.
default 는 case 에서 찾지 못할 경우 기본적으로 실행되는 코드입니다. break 를 쓰는 것은 오류를 줄이기 위해 관습적으로 사용합니다. (default 아래에 case 가 있으면 break 없이 그 case 가 실행되니까)
#include<iostream> int main() { using std::cout; using std::cin; using std::endl; cout << "메뉴를 선택하시오.\n" << endl; cout << "1) 사과쥬스 " << endl; cout << "2) 카페라테 " << endl; cout << "3) 생강차 " << endl; int selection; cin >> selection; switch (selection) { case 1 : cout << "사과쥬스를 선택합니다." << endl; break; case 2 : cout << "카페라테를 선택합니다." << endl; break; case 3 : cout << "생강차를 선택합니다." << endl; break; default: cout << "선택에 없습니다." << endl; break; } return 0; }
switch 문에 break 의 위치를 변화시키면 아래와 같은 코드도 가능합니다. 키보드에서 a, b, c 를 입력 받아서 동일한 결과를 얻으려면 실행문을 case ‘c’: 에 넣고 break 키워드를 넣습니다. case ‘a’: 와 case ‘b’: 는 그저 프로그램의 실행을 다음 라인으로 넘기게 되므로 같은 결과를 얻습니다. 이것도 if else 문으로 작성한다면 논리합 연산자(AND)를 사용하는 등 좀 더 번거로운(?) 코드가 될 것 입니다. 이것도 가독성을 위한 것이라고 생각할 수 있습니다.
#include<iostream> int main() { using std::cout; using std::cin; using std::endl; char ch; cin >> ch; switch(ch){ case 'a': case 'b': case 'c': cout << "a나 b나 c를 입력한 결과" << endl; break; case 'd': case 'e': case 'f': cout << "d나 e나 f를 입력한 결과" << endl; break; default: cout << "그외의 입력" << endl; break; } return 0; }
레이블에 열거자 상수 사용하기
enum 열거자 상수를 사용하면 의미가 분명한 코드를 작성할 수 있습니다. 아래 예제는 enum 으로 0부터 4 까지 열거자들을 만듭니다. 이렇게 하면 case 1: case 2: 이런 코드 보다 훨씬 가독성이 좋아집니다.
#include<iostream> enum {apple, orange, kiwi, mango, strawberry}; int main() { using std::cout; using std::cin; using std::endl; int fruit; cin >> fruit; switch (fruit) { case apple: cout << "사과를 선택합니다" << endl; break; case orange: cout << "오렌지를 선택합니다" << endl; break; case kiwi: cout << "키위를 선택합니다" << endl; break; case mango: cout << "망고를 선택합니다" << endl; break; case strawberry: cout << "딸기를 선택합니다" << endl; break; default: cout << "선택에 없습니다" << endl; break; } return 0; }
요약
if else 문과 비교해서 switch 구문이 더 유용해 보이지만 정교한 코드를 작성하는 것에는 if else 문이 더 적합합니다. 상황에 따라 if else 문이나 switch 문을 적당히 선택하여 사용하면 됩니다.
참고문서
switch statement(C++) | Microsoft Docs