Topic 3: 연산자와 표현식 🔢
학습 목표
- C++의 다양한 연산자들을 이해하고 사용할 수 있다
- 연산자 우선순위를 파악하여 올바른 표현식을 작성할 수 있다
- 증감 연산자와 대입 연산자를 적절히 활용할 수 있다
산술 연산자
기본적인 수학 연산을 수행하는 연산자들입니다.
#include <iostream>
using namespace std;
int main() {
int a = 15, b = 4;
cout << "a = " << a << ", b = " << b << endl;
cout << "덧셈: " << a << " + " << b << " = " << (a + b) << endl;
cout << "뺄셈: " << a << " - " << b << " = " << (a - b) << endl;
cout << "곱셈: " << a << " * " << b << " = " << (a * b) << endl;
cout << "나눗셈: " << a << " / " << b << " = " << (a / b) << endl;
cout << "나머지: " << a << " % " << b << " = " << (a % b) << endl;
// 실수 나눗셈
double x = 15.0, y = 4.0;
cout << "실수 나눗셈: " << x << " / " << y << " = " << (x / y) << endl;
return 0;
}
주의사항:
- 정수끼리 나눗셈은 소수점 이하를 버림 (15/4 = 3)
- 나머지 연산자(%)는 정수에만 사용 가능
- 0으로 나누기는 실행 오류 발생
대입 연산자
변수에 값을 할당하는 연산자들입니다.
#include <iostream>
using namespace std;
int main() {
int x = 10;
cout << "초기값: x = " << x << endl;
// 복합 대입 연산자
x += 5; // x = x + 5와 같음
cout << "x += 5: x = " << x << endl;
x -= 3; // x = x - 3와 같음
cout << "x -= 3: x = " << x << endl;
x *= 2; // x = x * 2와 같음
cout << "x *= 2: x = " << x << endl;
x /= 4; // x = x / 4와 같음
cout << "x /= 4: x = " << x << endl;
x %= 5; // x = x % 5와 같음
cout << "x %= 5: x = " << x << endl;
return 0;
}
증감 연산자
변수의 값을 1 증가시키거나 1 감소시키는 연산자입니다.
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 5;
cout << "초기값: a = " << a << ", b = " << b << endl;
// 전위 증감 연산자 (먼저 증감 후 사용)
cout << "++a = " << ++a << endl; // a를 먼저 6으로 증가 후 출력
cout << "현재 a = " << a << endl;
cout << "--a = " << --a << endl; // a를 먼저 5로 감소 후 출력
cout << "현재 a = " << a << endl;
// 후위 증감 연산자 (먼저 사용 후 증감)
cout << "b++ = " << b++ << endl; // b를 먼저 출력(5) 후 6으로 증가
cout << "현재 b = " << b << endl;
cout << "b-- = " << b-- << endl; // b를 먼저 출력(6) 후 5로 감소
cout << "현재 b = " << b << endl;
return 0;
}
증감 연산자 활용 예제
#include <iostream>
using namespace std;
int main() {
int count = 0;
cout << "현재 count: " << count << endl;
cout << "count++ 실행 후 반환값: " << count++ << endl;
cout << "실행 후 count: " << count << endl;
cout << "\n++count 실행 후 반환값: " << ++count << endl;
cout << "실행 후 count: " << count << endl;
// 실제 활용 사례: 반복문에서 카운터
int i = 0;
cout << "\n카운터 예제:" << endl;
while (i < 5) {
cout << "i의 현재 값: " << i++ << endl; // i를 출력한 후 증가
}
cout << "반복 종료 후 i: " << i << endl;
return 0;
}
비교 연산자
두 값을 비교하여 참(true) 또는 거짓(false)을 반환합니다.
#include <iostream>
using namespace std;
int main() {
int x = 10, y = 20;
cout << "x = " << x << ", y = " << y << endl;
cout << boolalpha; // true/false로 출력
cout << "x == y: " << (x == y) << endl; // 같다
cout << "x != y: " << (x != y) << endl; // 다르다
cout << "x > y: " << (x > y) << endl; // 크다
cout << "x < y: " << (x < y) << endl; // 작다
cout << "x >= y: " << (x >= y) << endl; // 크거나 같다
cout << "x <= y: " << (x <= y) << endl; // 작거나 같다
return 0;
}
논리 연산자
논리값(true/false)을 다루는 연산자들입니다.
#include <iostream>
using namespace std;
int main() {
bool a = true, b = false;
cout << boolalpha;
cout << "a = " << a << ", b = " << b << endl;
cout << "a && b (논리곱): " << (a && b) << endl; // 둘 다 참일 때 참
cout << "a || b (논리합): " << (a || b) << endl; // 하나라도 참이면 참
cout << "!a (논리부정): " << !a << endl; // 참을 거짓으로, 거짓을 참으로
cout << "!b (논리부정): " << !b << endl;
// 실제 조건 예제
int age = 25;
bool hasLicense = true;
if (age >= 18 && hasLicense) {
cout << "\n운전할 수 있습니다." << endl;
}
if (age < 18 || !hasLicense) {
cout << "운전할 수 없습니다." << endl;
}
return 0;
}
연산자 우선순위
연산자들은 실행되는 순서가 정해져 있습니다.
#include <iostream>
using namespace std;
int main() {
// 기본 우선순위
int result1 = 2 + 3 * 4; // 곱셈이 먼저: 2 + 12 = 14
int result2 = (2 + 3) * 4; // 괄호가 먼저: 5 * 4 = 20
cout << "2 + 3 * 4 = " << result1 << endl;
cout << "(2 + 3) * 4 = " << result2 << endl;
// 복잡한 표현식
bool result3 = 5 > 3 && 2 < 4 || false;
// 순서: 5>3 (true), 2<4 (true), true && true (true), true || false (true)
cout << "5 > 3 && 2 < 4 || false = " << boolalpha << result3 << endl;
// 증감 연산자 우선순위
int x = 5;
int y = ++x * 2; // 먼저 x를 6으로 증가시킨 후 2를 곱함
cout << "x = " << x << ", y = " << y << endl;
return 0;
}
주요 우선순위 (높은 순서부터):
()
- 괄호++
,--
- 증감 연산자*
,/
,%
- 곱셈, 나눗셈, 나머지+
,-
- 덧셈, 뺄셈<
,<=
,>
,>=
- 비교 연산자==
,!=
- 동등 연산자&&
- 논리곱||
- 논리합=
,+=
,-=
등 - 대입 연산자
조건부 연산자 (삼항 연산자)
간단한 if-else 문을 대체할 수 있는 연산자입니다.
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 20;
// 기본 형태: 조건 ? 참일때값 : 거짓일때값
int max = (a > b) ? a : b;
cout << "더 큰 값: " << max << endl;
// 문자열도 가능
string status = (a % 2 == 0) ? "짝수" : "홀수";
cout << a << "는 " << status << "입니다." << endl;
// 간단한 예제
int score = 85;
string result = (score >= 80) ? "합격" : "불합격";
cout << "점수 " << score << "점: " << result << endl;
return 0;
}
실습 과제
기초 실습
- 두 정수를 입력받아 사칙연산 결과를 모두 출력하는 프로그램을 작성해보세요.
- 정수 하나를 입력받아 그 수의 제곱, 세제곱을 계산하여 출력하는 프로그램을 작성해보세요.
심화 실습
- 상품 가격과 할인율을 입력받아 최종 가격을 계산하는 프로그램을 작성해보세요.
- 시험 점수를 입력받아 60점 이상이면 “합격”, 그 미만이면 “불합격”을 삼항 연산자로 출력하는 프로그램을 작성해보세요.
핵심 포인트
- 산술 연산자:
+
,-
,*
,/
,%
- 기본 수학 연산 - 대입 연산자:
=
,+=
,-=
,*=
,/=
,%=
- 값 할당과 복합 연산 - 증감 연산자:
++
,--
- 전위와 후위의 차이 이해 중요 - 비교 연산자:
==
,!=
,>
,<
,>=
,<=
- 조건문에서 주로 사용 - 논리 연산자:
&&
,||
,!
- 복합 조건 표현 - 우선순위: 괄호를 활용하여 명확하게 표현
- 삼항 연산자: 간단한 조건부 값 할당에 유용
✅ 연산자와 표현식 체크리스트
다음 토픽에서는 자료형 간의 변환에 대해 배워보겠습니다.
Last updated on