C++에서 switch 문 사용
-
switch
문을 사용하여 다중 사례 코드 경로 시나리오 구성 -
default
키워드를 사용하여switch
에서 기본 코드 경로 지정 -
{}
블록 표기법을 사용하여 다른 코드 경로에서 지역 변수 선언
이 기사에서는 C++에서switch
문을 사용하는 방법에 대한 몇 가지 방법을 설명합니다.
switch
문을 사용하여 다중 사례 코드 경로 시나리오 구성
switch
키워드는 주어진 표현식을 조건으로 평가하는 다른 블록 기반 문과 유사하게 사용됩니다. 유일한 차이점은 case
키워드로 지정된 각 코드 경로와 비교하여 표현식에 정수 값이 있어야한다는 것입니다. 경로의 구조는 다음과 같습니다.case label : statements
여기서label
은switch
조건의 표현식과 비교 한 값입니다. 표현식이 레이블 중 하나와 일치하면 프로그램 실행은 해당 레이블 뒤의 명령문으로 이동합니다. case
블록이break;
문으로 끝나지 않으면 프로그램은break;
에 도달하지 않거나switch
범위 자체가 끝났습니다.
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
enum WEEK { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
int main() {
int week_day;
cout << "Type the weekday (0-6): ";
cin >> week_day;
if (cin.fail()) {
cout << "Error occured when reading from stream!" << endl;
exit(EXIT_FAILURE);
};
switch (week_day) {
case Monday:
cout << "Monday\n";
break;
case Tuesday:
cout << "Tuesday\n";
break;
case Wednesday:
cout << "Wednesday\n";
break;
case Thursday:
cout << "Thursday\n";
break;
case Friday:
cout << "Friday\n";
break;
case Saturday:
cout << "Saturday\n";
break;
case Sunday:
cout << "Sunday\n";
break;
default:
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
default
키워드를 사용하여switch
에서 기본 코드 경로 지정
default
키워드는 선언 된 케이스 중switch
표현식과 일치하는 케이스가없는 경우 실행되는 특수 케이스 레이블을 정의합니다. 알아 두어야 할 중요한 점은 모든 레이블 블록이switch
구조의 기본 논리를 충족하기 위해 끝에break;
문이 필요하다는 것입니다. 다음 코드 샘플은 중단없이 switch
문을 보여 주며 이는 다소 갑작스럽게 작동합니다. week_day
값이 첫 번째 레이블Monday
와 일치하면 기본 레이블 옆에있는 문을 포함하여 모든cout
문이 실행됩니다. 반면에week_day
값이 case 레이블과 일치하지 않으면default
레이블로 시작하는cout
문이 실행됩니다.
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
enum WEEK { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
int main() {
int week_day;
cout << "Type the weekday (0-6): ";
cin >> week_day;
if (cin.fail()) {
cout << "Error occured when reading from stream!" << endl;
exit(EXIT_FAILURE);
};
switch (week_day) {
case Monday:
cout << "Monday\n";
case Tuesday:
cout << "Tuesday\n";
case Wednesday:
cout << "Wednesday\n";
case Thursday:
cout << "Thursday\n";
case Friday:
cout << "Friday\n";
default:
cout << "Wrong number specified!\n";
case Saturday:
cout << "Saturday\n";
case Sunday:
cout << "Sunday\n";
}
exit(EXIT_SUCCESS);
}
{}
블록 표기법을 사용하여 다른 코드 경로에서 지역 변수 선언
다른 블록 기반 명령문과 마찬가지로switch
본문에는 변수를 선언 할 수있는 범위가 있지만, 경우에는 사용자가 각case
구문에 지역 변수를 포함해야합니다. 모든case
경로의 문은{}
내부의 별도 블록 내에서 선언되지 않는 한 공유 범위를가집니다. 따라서 변수가 하나의 case
에서 초기화되면 다른 경우의 문은 동일한 변수를 참조 할 수 없습니다. 다음 예제는case Friday
에 대한 로컬 블록이 있고 내부 변수가 다른case
에서 보이지 않는switch
문을 구현합니다.
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
enum WEEK { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
int main() {
int week_day;
cout << "Type the weekday (0-6): ";
cin >> week_day;
if (cin.fail()) {
cout << "Error occured when reading from stream!" << endl;
exit(EXIT_FAILURE);
};
switch (week_day) {
case Monday:
cout << "Monday\n";
break;
case Tuesday:
cout << "Tuesday\n";
break;
case Wednesday:
cout << "Wednesday\n";
break;
case Thursday:
cout << "Thursday\n";
break;
case Friday: {
string str = "Friday";
cout << str << endl;
break;
}
case Saturday:
cout << "Saturday\n";
break;
case Sunday:
cout << "Sunday\n";
break;
default:
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook