전체 코드
#include <iostream>
using namespace std;
int main()
{
int hp = 100;
int damage = 100;
hp -= damage;
bool isDead = (hp <= 0);
#pragma region if문
if (isDead)
{
cout << "몬스터를 처치했습니다" << endl;
cout << "경험치를 획득했습니다." << endl;
}
else
{
if (hp <= 20)
cout << "몬스터가 도망가고 있습니다." << endl;
else
cout << "몬스터가 반격했습니다." << endl;
}
#pragma endregion
if (!isDead)
{
cout << "몬스터가 반격 준비를 합니다." << endl;
}
if (isDead == false)
{
cout << "몬스터가 다시 일어났습니다." << endl;
}
const int ROCK = 0;
const int PAPER = 1;
const int SCISSORS = 2;
int input = 40;
if (input == ROCK)
cout << "바위를 냈습니다." << endl;
else if (input == PAPER)
cout << "보를 냈습니다." << endl;
else if (input == SCISSORS)
cout << "가위를 냈습니다." << endl;
else
cout << "뭘 낸겁니까?" << endl;
#pragma region switch-case문
switch (input)
{
case ROCK:
cout << "바위를 냈습니다." << endl;
break;
case PAPER:
cout << "보를 냈습니다." << endl;
break;
case SCISSORS:
cout << "가위를 냈습니다." << endl;
break;
default:
cout << "뭘 낸겁니까?" << endl;
break;
}
#pragma endregion
return 0;
}
📚 분기문 핵심 정리 (강의 요약)
🌱 분기문이란?
- 프로그램 흐름을 조건에 따라 나누는 것
- 대표적 분기문:
if, if-else, if-else if-else, switch-case
🌱 if 문
기본 구조
if (조건)
{
}
else
{
}
여러 조건 체크
if (조건1)
{
}
else if (조건2)
{
}
else
{
}
🌱 switch-case 문
기본 구조
switch (변수)
{
case 값1:
break;
case 값2:
break;
default:
break;
}
주의점
switch의 조건문에는 정수 계열만 사용 가능
break 없으면 아래 case로 계속 실행됨 (fall-through)
🪛 디스어셈블리 분석 (어셈과 연결)
| C++ 코드 | 어셈블리 대응 |
|---|
if (isDead) | test eax, eax + je |
else if | cmp + je 연속 처리 |
switch | cmp + je로 case 검사 |
hp -= damage | sub 명령어로 연산 |
bool isDead = (hp <= 0) | cmp + jle로 판단 |
🚀 디스어셈블리 예시
cmp dword ptr [hp], 0 ; hp와 0 비교
jle 죽음처리구역
...
cmp dword ptr [input], 0
je 바위처리
cmp dword ptr [input], 1
je 보처리
cmp dword ptr [input], 2
je 가위처리
jmp 기본처리
📢 팁과 주의점
| 항목 | 설명 |
|---|
| 조건문 깊이 | 너무 깊은 중첩은 피하자 (3단계 이상 X) |
| switch-case | 정수형만 가능 (문자, 열거형 포함) |
| break 누락 | 누락 시 다음 case로 넘어가는 fall-through 발생 |
| 조건 순서 | 자주 나오는 조건을 먼저 배치 (성능 최적화) |
| 디버깅 팁 | 조건문 걸고 F10 단위로 실행하며 흐름 확인 |
💡 마무리 요약
| 분기문 종류 | 특징 |
|---|
| if | 기본적인 조건 분기 |
| if-else | 참일 때와 거짓일 때 각각 처리 |
| if-else if | 다중 조건 처리 |
| switch-case | 정수형 조건 분기 최적화 |
📂 정리
| 개념 | 정리 |
|---|
| if문 | 가장 기본적인 조건문 |
| if-else | 참/거짓 각각 처리 |
| if-else if-else | 다중 조건 처리 |
| switch-case | 다수의 값 비교에 유리 |
| 디스어셈블리 | cmp, test, je, jne, jmp 등과 1:1 대응 |
📦 완전 정리 패키지 제공
이 코드와 주석은 "분기문"을 완벽히 마스터할 수 있는 패키지입니다.
👉 실습 코드 + 주석 설명 + 어셈블리 해석까지 ALL-IN-ONE!
필요하시면 이 내용을 PDF로 정리해 드리거나, 퀴즈와 연습 문제도 만들어 드릴 수 있습니다.
다음으로 어떤 내용이 필요하신가요? 😊