C 언어
C++의 다양한 연산자 유형을 예제와 함께 학습합니다. 프로그래밍에서 연산자는 값이나 변수에 대해 연산을 수행하는 기호입니다.
연산자는 변수와 값에 대해 연산을 수행하는 기호입니다. 예: +는 덧셈, -는 뺄셈 연산자입니다.
C++ 연산자는 6가지 유형으로 분류됩니다:
변수와 데이터에 산술 연산을 수행합니다. 예:
a + b;
+ 연산자가 a, b를 더합니다. 다른 산술 연산자들도 있습니다.
| 연산자 | 연산 |
|---|---|
+ | 덧셈 |
- | 뺄셈 |
* | 곱셈 |
/ | 나눗셈 |
% | 모듈로(나머지) |
#include <iostream>
using namespace std;
int main() {
int a, b;
a = 7;
b = 2;
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;
return 0;
}
실행 결과
a + b = 9 a - b = 5 a * b = 14 a / b = 3 a % b = 1
+, -, *는 예상대로 덧셈, 뺄셈, 곱셈을 수행합니다.
/ 나눗셈 연산자
위 예제의 (a / b) 연산. /는 나눗셈 연산자입니다.
정수를 정수로 나누면 몫이 나옵니다. 하지만 피제수나 제수 중 하나가 부동소수점이면 결과도 소수로 나옵니다.
C++에서: 7/2 = 3, 7.0/2 = 3.5, 7/2.0 = 3.5, 7.0/2.0 = 3.5
% 모듈로 연산자
%는 나머지를 계산합니다. a=9를 b=4로 나누면 나머지는 1입니다.
참고: % 연산자는 정수에만 사용 가능합니다.
C++은 증가(++)와 감소(--) 연산자를 제공합니다.
++: 피연산자 값을 1 증가--: 피연산자 값을 1 감소예: int num = 5; ++num; // 6
// 증감 연산자 동작
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 100, result_a, result_b;
// a를 1 증가시켜 result_a에 저장
result_a = ++a;
cout << "result_a = " << result_a << endl;
// b를 1 감소시켜 result_b에 저장
result_b = --b;
cout << "result_b = " << result_b << endl;
return 0;
}
실행 결과
result_a = 11 result_b = 99
위 프로그램에서 ++, --를 전위(++a, --b)로 사용했습니다. 후위(a++, b--)로도 사용 가능합니다.
자세한 내용은 증감 연산자 튜토리얼을 참조하세요.
변수에 값을 대입할 때 사용합니다. 예:
// a에 5 대입
a = 5;
| 연산자 | 예제 | 동등한 표현 |
|---|---|---|
= | a = b; | a = b; |
+= | a += b; | a = a + b; |
-= | a -= b; | a = a - b; |
*= | a *= b; | a = a * b; |
/= | a /= b; | a = a / b; |
%= | a %= b; | a = a % b; |
#include <iostream>
using namespace std;
int main() {
int a, b;
a = 2; // a에 2 대입
b = 7; // b에 7 대입
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "\nAfter a += b;" << endl;
a += b; // a = a + b
cout << "a = " << a << endl;
return 0;
}
실행 결과
a = 2 b = 7 After a += b; a = 9
두 피연산자 간의 관계를 검사합니다. 예:
// a가 b보다 큰지 검사
a > b;
>는 관계 연산자입니다. a가 b보다 큰지 검사합니다.
관계가 true면 1, false면 0을 반환합니다.
| 연산자 | 의미 | 예제 |
|---|---|---|
== | 같음 | 3 == 5 → false |
!= | 다름 | 3 != 5 → true |
> | 초과 | 3 > 5 → false |
< | 미만 | 3 < 5 → true |
>= | 이상 | 3 >= 5 → false |
<= | 이하 | 3 <= 5 → true |
#include <iostream>
using namespace std;
int main() {
int a, b;
a = 3; b = 5;
bool result;
result = (a == b); cout << "3 == 5 is " << result << endl;
result = (a != b); cout << "3 != 5 is " << result << endl;
result = a > b; cout << "3 > 5 is " << result << endl;
result = a < b; cout << "3 < 5 is " << result << endl;
result = a >= b; cout << "3 >= 5 is " << result << endl;
result = a <= b; cout << "3 <= 5 is " << result << endl;
return 0;
}
실행 결과
3 == 5 is 0 3 != 5 is 1 3 > 5 is 0 3 < 5 is 1 3 >= 5 is 0 3 <= 5 is 1
참고: 관계 연산자는 의사결정과 루프에서 사용됩니다.
표현식이 true인지 false인지 검사합니다. true면 1, false면 0 반환.
| 연산자 | 예제 | 의미 |
|---|---|---|
&& | expr1 && expr2 | 논리 AND. 모든 피연산자가 true일 때만 true |
|| | expr1 || expr2 | 논리 OR. 하나라도 true면 true |
! | !expr | 논리 NOT. 피연산자가 false일 때만 true |
논리 연산자는 의사결정에 자주 쓰입니다. 이해를 돕기 위한 예:
a = 5, b = 8 가정:
(a > 3) && (b > 5) → true
(a > 3) && (b < 5) → false
(a > 3) || (b > 5) → true
(a > 3) || (b < 5) → true
(a < 3) || (b < 5) → false
!(a < 3) → true
!(a > 3) → false
#include <iostream>
using namespace std;
int main() {
bool result;
result = (3 != 5) && (3 < 5); cout << "(3 != 5) && (3 < 5) is " << result << endl;
result = (3 == 5) && (3 < 5); cout << "(3 == 5) && (3 < 5) is " << result << endl;
result = (3 == 5) && (3 > 5); cout << "(3 == 5) && (3 > 5) is " << result << endl;
result = (3 != 5) || (3 < 5); cout << "(3 != 5) || (3 < 5) is " << result << endl;
result = (3 != 5) || (3 > 5); cout << "(3 != 5) || (3 > 5) is " << result << endl;
result = (3 == 5) || (3 > 5); cout << "(3 == 5) || (3 > 5) is " << result << endl;
result = !(5 == 2); cout << "!(5 == 2) is " << result << endl;
result = !(5 == 5); cout << "!(5 == 5) is " << result << endl;
return 0;
}
실행 결과
(3 != 5) && (3 < 5) is 1 (3 == 5) && (3 < 5) is 0 (3 == 5) && (3 > 5) is 0 (3 != 5) || (3 < 5) is 1 (3 != 5) || (3 > 5) is 1 (3 == 5) || (3 > 5) is 0 !(5 == 2) is 1 !(5 == 5) is 0
논리 연산자 프로그램 해설
(3 != 5) && (3 < 5): 양쪽 모두 true(1) → 1(3 == 5) && (3 < 5): 왼쪽 false(0) → 0(3 == 5) && (3 > 5): 양쪽 모두 false → 0(3 != 5) || (3 < 5): 양쪽 모두 true → 1(3 != 5) || (3 > 5): 왼쪽 true → 1(3 == 5) || (3 > 5): 양쪽 모두 false → 0!(5 == 2): 피연산자 false → 1!(5 == 5): 피연산자 true → 0개별 비트 단위 연산 수행. char와 int 타입에서만 사용 가능.
| 연산자 | 설명 |
|---|---|
& | 비트 AND |
| | 비트 OR |
^ | 비트 XOR |
~ | 비트 1의 보수 |
<< | 비트 왼쪽 시프트 |
>> | 비트 오른쪽 시프트 |
자세한 내용은 C++ 비트 연산자 튜토리얼을 참조하세요.
나중에 다룰 다른 주요 연산자들:
| 연산자 | 설명 | 예제 |
|---|---|---|
sizeof | 데이터 타입 크기 반환 | sizeof(int); // 4 |
?: | 조건에 따른 값 반환(삼항) | string result = (5 > 0) ? "even" : "odd"; |
& | 피연산자 메모리 주소 | # // num의 주소 |
. | 구조체/클래스 멤버 접근 | s1.marks = 92; |
-> | 포인터로 멤버 접근 | ptr->marks = 92; |
<< | 출력 스트림 | cout << 5; |
>> | 입력 스트림 | cin >> num; |
C 언어
C++ 연산자 오버로딩 이 튜토리얼에서는 예제와 함께 연산자 오버로딩을 학습합니다. C++에서는 객체와 구조체 같은 사용자 정의 타입에 대해 연산자 작동 방식을 변경할 수 있습니다. 이를 연산자 오버로딩(operator overloading)이라 합니다. 예를 들어, Complex 클래스로 표현되는 복소수 객체 c1, c2, result 세 개를 만들었다고 가정합시다. 연산자 오버로딩으로 + 연산자 작동 방식을 재정의하면, 다음과 같이 c1과 c2의 복소수를 더할 수 있습니다: result = c1 + c2; 다음과 같은 방식 대
C++ 상속 이 튜토리얼에서는 예제를 통해 C++의 상속에 대해 학습합니다. 소개 상속은 C++에서 객체 지향 프로그래밍의 핵심 기능 중 하나입니다. 기존 클래스(기반 클래스)로부터 새로운 클래스(파생 클래스)를 생성할 수 있게 해줍니다. 파생 클래스는 기반 클래스의 기능을 상속받으며 자체적인 추가 기능을 가질 수 있습니다. 예를 들어: class Animal { // eat() 함수 // sleep() 함수 }; class Dog : public Animal { // bark() 함수 }; 여기서 Dog 클래