728x90
[Do it C++ 완전정복_ 77~94p]
연산자
- 증감 연산자 (++, --)
- 값을 1 증가하거나 감소시키는 연산자
- 전위(prefix): ++a → 먼저 값을 증가시키고 다른 연산 수행
- 후위(postfix): a++ → 먼저 다른 연산 수행 후 값 증가
int a = 5;
int b = ++a; // a=6, b=6
int c = a--; // a=5, c=6
- 논리 연산자 (&&, ||, !)
- 참/거짓을 판단할 때 사용하는 연산자
- && → AND: 양쪽이 모두 참일 때 참
- || → OR: 한쪽만 참이어도 참
- ! → NOT: 참 ↔ 거짓 반전
bool x = true, y = false;
bool result = x && y; // false
result = x || y; // true
result = !x; // false
- 2의 보수 구하는 방법 (음수를 이진수로 표현할 때)
- 양수의 이진수 구함
- 모든 비트를 반전(0↔1)
- 1을 더함 (ex. 5 → 00000101, -5 → 11111011)
- 단항 연산자
- 값 하나에만 적용되는 연산자 : +, -, !, ~, ++, --, *(간접참조), &(주소)
- 값 하나를 바꾸거나, 참조/주소를 얻거나, 부정/반전 수행
int a = 5;
int b = -a; // -5
int* ptr = &a; // 주소
- 이항 연산자 표현식
- 값 두 개를 사용해서 연산하는 연산자 : +, -, *, /, %, &&, ||, ==, < 등
- 항이 2개 필요, 표현식 결과는 연산 결과
int a = 5, b = 3;
int c = a + b; // 8
bool flag = (a > b); // true
- 비트 연산자 (&, |, ^, ~, <<, >>)
- 정수의 비트 단위 연산
- & → AND, | → OR, ^ → XOR, ~ → NOT
- << → 왼쪽 시프트, >> → 오른쪽 시프트
int a = 5; // 00000101
int b = 3; // 00000011
int c = a & b; // 00000001 = 1
int d = a | b; // 00000111 = 7
int e = a ^ b; // 00000110 = 6
int f = ~a; // 11111010 = -6 (2의 보수)
int g = a << 1; // 00001010 = 10
int h = a >> 1; // 00000010 = 2
연산자 우선순위
| 우선순위 | 연산자 | 설명 | 결합 방향 |
| 1 | :: | 범위 지정 연산자 | 좌 → 우 |
| 2 | a++, a--, (), [], ->, ->*, type(a), type{a}, a(), a[], a.b, a->b | 함수 호출, 배열 인덱싱, 멤버 접근, 타입 변환 등 | 왼 → 오 |
| 3 | ++a, --a, +, -, !, ~, *, &, sizeof, alignof, typeid, noexcept, new, new[], delete, delete[], co_await | 단항 연산자, 메모리 할당/해제, 예외 처리 등 | 오 → 왼 |
| 4 | a.*b, a->*b | 포인터 멤버 접근 | 왼 → 오 |
| 5 | *, /, % | 곱셈, 나눗셈, 나머지 | 왼 → 오 |
| 6 | +, - | 덧셈, 뺄셈 | 왼 → 오 |
| 7 | <<, >> | 비트 시프트 | 왼 → 오 |
| 8 | <, <=, >, >= | 비교 연산자 | 왼 → 오 |
| 9 | ==, != | 동등/부등 비교 | 왼 → 오 |
| 10 | & | 비트 AND | 왼 → 오 |
| 11 | ^ | 비트 XOR | 왼 → 오 |
| 12 | ` | ` | 비트 OR |
| 13 | && | 논리 AND | 왼 → 오 |
| 14 | ` | ` | |
| 15 | ?: | 조건(3항) 연산자 | 오른 → 왼 |
| 16 | =, +=, -=, *=, /=, %= 등 | 대입 연산자 | 오른 → 왼 |
| 17 | throw | 예외 던지기 | 왼 → 오 |
| 18 | , | 콤마 연산자 | 왼 → 오 |
https://en.cppreference.com/w/cpp/language/operator_precedence.html
C++ Operator Precedence - cppreference.com
The following table lists the precedence and associativity of C++ operators. Operators are listed top to bottom, in descending precedence. a, b and c are operands. ↑ The operand of sizeof cannot be a C-style type cast: the expression sizeof (int) * p is
en.cppreference.com
'C++ > C++ 문법' 카테고리의 다른 글
| C++ 함수와 매개변수 (0) | 2025.10.13 |
|---|---|
| C++ 포인터(메모리 주소를 저장하는 변수)와 배열 (0) | 2025.10.13 |
| C++ 리터럴 (Literal) (0) | 2025.10.13 |
| C++ Lvalue와 RValue (0) | 2025.10.13 |
| C++ 기본 자료형과 메모리 크기 (sizeof) (0) | 2025.10.13 |