1. 조건문이란

C++ 프로그램은 main 함수 시작부터 끝까지 순차적으로 진행한다. 조건문은 특정 조건을 만족할 때만 지정된 코드 블럭을 실행시킬 수 있는 문법이다.

2. 조건문 흐름

#include <iostream>
 
using namespace std;
 
int main() {
	int a, b;
	cin >> a >> b;
	if(a > b) {
		 cout << "첫 번째 수가 두 번째 수보다 큽니다.";
	}
	else if(a < b) {
		 cout << "첫 번째 수가 두 번째 수보다 작습니다.";
	}
	else {
		cout << "입력된 두 수가 같습니다.";
	}
	return 0;
}

위 예제 12 ~ 14 줄에서 if(a > b) { ... } 문을 통해 두 수의 크기를 비교한다. 15 ~ 17 줄의 else if(a < b) { ... } 는 첫 번째 조건인 a > b거짓이고 a < b일 때만 실행된다. else if문은 if문과 else문 사이에 다수가 삽입될 수 있다. 첫 번째 else if부터 순차적으로 검사하며 만약 참인 조건문이 있을 경우 이후의 else if문은 실행되지 않는다. 마지막으로 18 ~ 20줄의 else문은 이전 if, else if의 조건들이 모두 거짓이었을 경우 실행된다. else ifelse문이 사용되기 위해선 반드시 선행하는 if문이 있어야 한다.

3. 비교 연산자

연산자의미
<작다
>크다
작거나 같다
>=크거나 같다
==같다
!=다르다

4. 논리 연산자

연산자의미
&&and
||or
!not

5. 예제

#include <iostream>
 
using namespace std;
 
int main() {
	int a;
	cin >> a;
	if(10 < a && a < 20) {
		 cout << "입력한 수가 10보다 크고 20보다 작습니다.";
	}
	if(a == 14 || a == 18) {
		cout << "입력한 수는 14거나 18입니다.";
	}
	if(!(a == 15)) {
		cout << "입력한 수는 15가 아닙니다.";
	}
	return 0;
}

6. switch - case

조건 분기문의 한 특수한 형태로 알아두면 좋다. 특정 형태의 입력을 받을 때 if - else if문 보다 코드 가독성이 좋아 사용한다.

#include <iostream>
 
using namespace std;
 
int main() {
	int a;
	cin >> a;
	switch(a) {
		case 1: // a가 1일 때
			// do something
			break;
		case 2: // 2일 때
			// do something 
			break;
		case 3: // 3일 때
			// do something
			break;
		default: // 그 외 일 때
			// do something
			break;
	}
	return 0;
}

각각의 case 들이 else if 역할을 한며 마지막 defaultelse문의 역할을 한다.

7. 삼항 연산자

필자가 자주 사용하는 조건문이다. 코드가 간결하고 이해하기 쉽기 때문에 많이 쓰는게 좋다고 개인적으로 생각한다. 조건식 ? 참일 경우 실행되는 식 : 거짓일 경우 실행되는 식 의 형태를 가지고 있다.

#include <iostream>
 
using namespace std;
 
int main() {
	int a, b; cin >> a >> b;
	int mx = a > b ? a : b;
	cout << "더 큰 값은 " << mx;
	return 0;
}

같은 동작을 하는 if-else코드를 보면 간결성을 확인할 수 있다.

#include <iostream>
 
using namespace std;
 
int main() {
	int a, b; cin >> a >> b;
	int mx;
	if(a > b) {
		mx = a;
	}
	else {
		mx = b;
	}
	cout << "더 큰 값은 " << mx;
	return 0;
}

번외로 아래와 같이 괄호를 이용해 여러 번 엮거나 코드를 실행시킬 수도 있지만 이럴 경우 그냥 if-else문을 사용하는게 훨신 코드를 읽기 편하다.

다중 사용 예시
#include <iostream>
 
using namespace std;
 
int main() {
	int a, b, c; cin >> a >> b >> c;
	int mx = a > b ? (a > c ? a : (c > b ? c : b)) : (b > c ? b : (a > c ? a : c));	
	cout << "가장 큰 값은 " << mx;
	return 0;
}
코드 실행 예시
#include <iostream>
 
using namespace std;
 
// 코드 실행 예시
int main() {
	int a, b; cin >> a >> b;	
	a > b ? cout << "더 큰 값은 " << a : cout << "더 큰 값은 " << b;
	return 0;
}