Topic 2: 비교 연산자와 논리 연산자 ⚖️
🎯 학습 목표
- 비교 연산자의 종류와 사용법을 익힐 수 있다
- 논리 연산자를 활용해 복합 조건을 만들 수 있다
- 실제 프로그램에서 조건식을 작성할 수 있다
🔍 비교 연산자
프로그램에서 값들을 비교하기 위해 사용하는 연산자들입니다.
기본 비교 연산자
연산자 | 의미 | 예시 | 결과 |
---|---|---|---|
== | 같다 | 5 == 5 | true |
!= | 다르다 | 5 != 3 | true |
> | 크다 | 7 > 3 | true |
< | 작다 | 3 < 7 | true |
>= | 크거나 같다 | 5 >= 5 | true |
<= | 작거나 같다 | 3 <= 7 | true |
실습 예제
#include <iostream>
using namespace std;
int main() {
int age = 20;
int score = 85;
// 비교 연산자 사용
cout << "나이가 18세 이상인가? " << (age >= 18) << endl;
cout << "점수가 90점인가? " << (score == 90) << endl;
cout << "점수가 80점보다 높은가? " << (score > 80) << endl;
return 0;
}
🧠 논리 연산자
여러 조건을 조합하여 복합적인 조건을 만들 때 사용합니다.
논리 연산자 종류
연산자 | 의미 | 설명 | 예시 |
---|---|---|---|
&& | AND (그리고) | 모든 조건이 true일 때 true | age >= 18 && score >= 60 |
|| | OR (또는) | 하나라도 true이면 true | name == "admin" || level > 10 |
! | NOT (아니다) | true를 false로, false를 true로 | !(age < 18) |
논리 연산자 활용 예제
#include <iostream>
using namespace std;
int main() {
int age = 22;
int score = 75;
bool hasLicense = true;
// AND 연산자 (&&)
if (age >= 18 && hasLicense) {
cout << "운전할 수 있습니다!" << endl;
}
// OR 연산자 (||)
if (score >= 90 || age <= 12) {
cout << "특별 혜택을 받을 수 있습니다!" << endl;
}
// NOT 연산자 (!)
if (!(score < 60)) {
cout << "합격입니다!" << endl;
}
return 0;
}
🎮 실전 연습
게임 입장 조건 체크 프로그램
#include <iostream>
using namespace std;
int main() {
int age;
int level;
bool hasTicket;
cout << "나이를 입력하세요: ";
cin >> age;
cout << "레벨을 입력하세요: ";
cin >> level;
cout << "티켓이 있나요? (1: 있음, 0: 없음): ";
cin >> hasTicket;
// 복합 조건 검사
if ((age >= 12 && hasTicket) || level >= 50) {
cout << "🎮 게임 입장 가능합니다!" << endl;
if (age >= 18 && level >= 30) {
cout << "⭐ VIP 라운지도 이용 가능합니다!" << endl;
}
} else {
cout << "❌ 입장 조건을 만족하지 않습니다." << endl;
}
return 0;
}
💡 주의사항
1. =
와 ==
의 차이
int x = 5;
// 잘못된 사용 (대입 연산자)
if (x = 3) { // x에 3을 대입하고 true 반환
cout << "항상 실행됨" << endl;
}
// 올바른 사용 (비교 연산자)
if (x == 3) { // x와 3을 비교
cout << "x가 3일 때만 실행됨" << endl;
}
2. 단락 평가 (Short-circuit Evaluation)
int a = 0;
// && 연산에서 첫 번째가 false이면 두 번째는 평가하지 않음
if (a != 0 && 10/a > 2) { // 안전함: a가 0이면 나눗셈 실행 안 됨
cout << "조건 만족" << endl;
}
// || 연산에서 첫 번째가 true이면 두 번째는 평가하지 않음
if (a == 0 || 10/a > 2) { // 안전함: a가 0이면 나눗셈 실행 안 됨
cout << "조건 만족" << endl;
}
🏆 연산자 우선순위
우선순위 규칙
연산자들도 수학처럼 계산 순서가 정해져 있습니다!
- 괄호
()
- 가장 높은 우선순위 - NOT
!
- 논리 부정 - 비교 연산자 -
<
,>
,<=
,>=
- 동등 연산자 -
==
,!=
- AND
&&
- 논리곱 - OR
||
- 논리합
#include <iostream>
using namespace std;
int main() {
int x = 5, y = 10, z = 15;
// 우선순위를 고려한 계산
bool result1 = x < y && y < z; // (x < y) && (y < z)
cout << "x < y && y < z: " << result1 << endl; // true
// 괄호를 사용한 명확한 표현
bool result2 = (x == 5 || y == 5) && z > 10;
cout << "(x == 5 || y == 5) && z > 10: " << result2 << endl; // true
// NOT 연산자의 우선순위
bool result3 = !x > 0; // (!x) > 0 으로 계산됨 (주의!)
bool result4 = !(x > 0); // 의도한 대로 계산
cout << "!x > 0: " << result3 << endl; // false
cout << "!(x > 0): " << result4 << endl; // false
return 0;
}
📚 실전 활용 예제
짝수/홀수 판별 프로그램
#include <iostream>
using namespace std;
int main() {
int number;
cout << "숫자를 입력하세요: ";
cin >> number;
// 논리 연산자 활용
// 짝수이면서 양수인지 확인
if (number % 2 == 0 && number > 0) {
cout << number << "는 양수이면서 짝수입니다! ✨" << endl;
} else if (number % 2 == 0) {
cout << number << "는 짝수입니다." << endl;
} else {
cout << number << "는 홀수입니다." << endl;
}
return 0;
}
간단한 성적 판별 시스템
#include <iostream>
using namespace std;
int main() {
int score;
bool attendance_good;
cout << "점수를 입력하세요: ";
cin >> score;
cout << "출석이 좋나요? (1: 예, 0: 아니오): ";
cin >> attendance_good;
// 논리 연산자 활용
if (score >= 90 && attendance_good) {
cout << "🏆 A등급입니다!" << endl;
} else if (score >= 80 || attendance_good) {
cout << "🥈 B등급입니다!" << endl;
} else if (score >= 70) {
cout << "🥉 C등급입니다!" << endl;
} else {
cout << "📚 더 열심히 공부하세요!" << endl;
}
return 0;
}
🎯 도전 과제
과제 1: 놀이공원 입장 프로그램
나이와 키를 입력받아 놀이기구 이용 가능 여부를 확인하세요.
- 7세 이상이면서 120cm 이상: 모든 놀이기구 이용 가능
- 5세 이상이거나 110cm 이상: 일부 놀이기구 이용 가능
// 힌트 구조
int age, height;
cout << "나이를 입력하세요: ";
cin >> age;
cout << "키를 입력하세요(cm): ";
cin >> height;
// 여기에 코드를 작성하세요
과제 2: 간단한 로그인 시스템
사용자 이름과 비밀번호를 입력받아 로그인 성공 여부를 확인하세요.
- 관리자: admin/1234 또는 root/0000
- 일반 사용자: user/1234
// 힌트 구조
string username, password;
cout << "사용자명: ";
cin >> username;
cout << "비밀번호: ";
cin >> password;
// 여기에 코드를 작성하세요
📝 핵심 정리
- 비교 연산자: 두 값을 비교하여 true/false 반환
- 논리 연산자: 여러 조건을 조합하여 복합 조건 생성
- 단락 평가: 불필요한 연산을 건너뛰어 효율성과 안전성 향상
- 우선순위: 괄호를 사용하여 명확한 의도 표현
- 실전 활용: 실제 문제 해결에 적절한 연산자 조합 사용
다음 토픽에서는 여러 조건을 더 깔끔하게 처리할 수 있는 switch문에 대해 배워보겠습니다!
Last updated on