반응형
switch-case
특별한 경우에 if문보다 깔끔하고 간결하게 코딩을 할수있다.
#include <iostream>
using namespace std;
enum class Colors
{
RED, // 0
GREEN, // 1
BLUE, // 2
};
void printColor(Colors Color)
{
switch(static_cast<int>(Color)) // cast를 통해 case를 정수로
{
case 0 :
cout << "RED" << endl;
break;
case 1 :
cout << "GREEN" << endl;
break;
case 2 :
cout << "BLUE" << endl;
break;
}
}
int main()
{
printColor(Colors::RED);
printColor(Colors::GREEN);
printColor(Colors::BLUE);
int x;
cin >> x;
switch(x)
{
case 1 :
cout << "input is 1" << endl;
break;
case 2 :
cout << "input is 2" << endl;
break;
default :
cout << "undefined input" << endl;
}
return 0;
}
switch-case문에서 break를 쓰지 않는 경우, 걸리는 case부터 맨 아래 case까지 모두 실행된다.
하지만 의도적으로 break를 사용하지 않고 모두 실행되게 코딩하는 경우도 있다고 한다.
정의된 case가 아니라면 default가 실행된다. default밑에는 break를 넣지 않아도 된다.
switch(static_cast<int>(Color))
케이스를 정수형으로 받기위해 int형으로 형변환을 해주면 코딩이 편해진다.
do-while
while문은 조건에 따라서 한번도 실행이 안될 수 있는 반면 do-while문은 처음 1번은 무조건 실행한다.
경우에 따라서는 do-while문이 꼭 필요한 경우도 있고,
반드시 한번 해야 된다는걸 강조하기 위해서 사용할 수도 있다.
#include <iostream>
using namespace std;
int main()
{
int selection; // 꼭 do-while 밖에 선언해야한다
do
{
cout << "1. add" << endl;
cout << "2. sub" << endl;
cout << "3. mult" << endl;
cout << "4. div" << endl;
cin >> selection;
} while (selection <= 0 || selection >= 5);
cout << "your selection is " << selection << endl;
return 0;
}
selection을 do 안으로 넣게되면 do 블럭이 끝나면서 selection이 사라져서
while문이 조건에 접근을 못하게 된다.
반응형
'C++' 카테고리의 다른 글
5-3. C++ std::cin.fail(), std::cin.clear(), std::cin.ignore() 함수 (0) | 2024.02.07 |
---|---|
5-2. C++ 난수 만들기 (0) | 2024.02.05 |
4-3. C++ 자료형에게 가명 붙이기 (type aliases), 구조체 (struct) (0) | 2024.02.02 |
4-2. C++ 문자열, 열거형, 열거형 클래스 (1) | 2024.02.02 |
4-1. C++ 전역변수, 정적변수, 내부연결, 외부연결 (1) | 2024.02.02 |