1. If else
if ([조건]) // [조건] == true;는 생략함
[결과];
[조건]은 불리언 뿐만 아니라 다양한 변수 혹은 상수를 넣을 수 있다.
[조건]을 만족하면 [결과]를 발동함.
if (isDead)
cout << "몬스터를 처치했습니다" << endl;
if (isDead == false) // 또는 !isDead
cout << "몬스터가 반격했습니다" << endl;
'== false' 대신 '!false'(NOT false)를 사용할 수 있다. 그러나 혼동을 줄 수 있음.
이 처럼 분기문을 두 개로 쓸 수 있지만, 최적화 관점에서 분기문을 하나만 쓸 수도 있다.
if (isDead)
cout << "몬스터를 처치했습니다" << endl;
else
cout << "몬스터가 반격했습니다" << endl;
if else문을 사용할 때, 기본적으로 if문은 하나의 조건만 판단하기 때문에, 여러 줄을 사용하고 싶다면 중괄호를 사용하여야 한다.
if (isDead)
{
cout << "몬스터를 처치했습니다" << endl;
else
cout << "몬스터가 반격했습니다" << endl;
}
2. 분기문 중첩
(1) else if
if (isDead) // 몬스터 체력이 20이하이면 도주하도록 함
{
cout << "몬스터를 처치했습니다" << endl;
else
{
if (hp <= 20)
cout << "몬스터가 도주하고 있습니다" << endl;
else
cout << "몬스터가 반격했습니다" << endl;
}
}
분기문을 여러번 중첩하면 디버그 할 때 어려움을 겪을 수 있음.
따라서 if - else if - else 문을 사용하여 코드를 간단하게 만들 수 있다.
if (isDead) // 몬스터 체력이 20이하이면 도주하도록 함
cout << "몬스터를 처치했습니다" << endl;
else if(hp <= 20)
cout << "몬스터가 도주하고 있습니다" << endl;
else
cout << "몬스터가 반격했습니다" << endl;
(2) 'switch-case 문' (가위바위보)
int main()
{
const int ROCK = 0;
const int PAPER = 1;
const int SCISSORS = 2;
int input = ROCK;
if (input == ROCK)
cout << "바위를 냈습니다" << endl;
else if (input == PAPER)
cout << "보를 냈습니다" << endl;
else if (input == SCISSORS)
cout << "가위를 냈습니다" << endl;
else // 0, 1, 2 이외의 숫자
cout << "잘못 냈습니다!!" << endl;
}
else if를 중첩하는 것 보다 더 쉬운 방법이 있다.
switch (input)
{
case ROCK:
cout << "바위를 냈습니다" << endl;
break;
case PAPER:
cout << "보를 냈습니다" << endl;
break;
case SCISSORS:
cout << "가위를 냈습니다" << endl;
break;
}
break를 제거하면 다음 줄을 그대로 실행해버린다.
default:
cout << "잘못 냈습니다!!" << endl;
위의 3가지 케이스가 아닌 다른 경우에는 'default'를 사용할 수 있다.
- 주의점
Switch-case의 input 에는 정수만 들어갈 수 있다.
'기초 C++ 스터디' 카테고리의 다른 글
2-4. 가위바위보 (0) | 2023.05.04 |
---|---|
2-2. 반복문(For, While) (0) | 2023.05.04 |
1-8. 데이터에 관한 여러가지 팁 (0) | 2023.05.02 |
1-7. const와 메모리 구조 (0) | 2023.05.02 |
1-6. 비트 연산과 비트 플래그 (0) | 2023.05.02 |