산술연산(Arithmetic)
연산(arithmetic)과 연산자(operators)
- 연산(arithmetic) : 수나 식을 일정한 규칙에 따라 계산 하는것
- 연산자(operators)
- 어떠한 행위를 하는 것으로 범위가 매우 넓고 다양
- 대부분 오버로딩(overloading) 가능
- 사용자 정의 자료형일 경우 연산자 정의 필요
| 연산자이름 | 문법 | 클래스 내부 정의 | 클래스 외부 정의 | |||
|---|---|---|---|---|---|---|
| unary plus | +a | T T::operator+() const; | T operator+(const T &a); | |||
| unary minus | -a | T T::operator-() const; | T operator-(const T &a); | |||
| addition | a + b | T T::operator+(const T2 &b) const; | T operator+(const T &a, const T2 &b); | |||
| subtraction | a - b | T T::operator-(const T2 &b) const; | T operator-(const T &a, const T2 &b); | |||
| multiplication | a * b | T T::operator*(const T2 &b) const; | T operator*(const T &a, const T2 &b); | |||
| division | a / b | T T::operator/(const T2 &b) const; | T operator/(const T &a, const T2 &b); | |||
| modulo | a % b | T T::operator%(const T2 &b) const; | T operator%(const T &a, const T2 &b); | |||
| bitwise NOT | ~a | T T::operator~() const; | T operator~(const T &a); | |||
| bitwise AND | a & b | T T::operator&(const T2 &b) const; | T operator&(const T &a, const T2 &b); | |||
| bitwise OR | a | b | T T::operator | (const T2 &b) const; | T operator | (const T &a, const T2 &b); |
| bitwise XOR | a ^ b | T T::operator^(const T2 &b) const; | T operator^(const T &a, const T2 &b); | |||
| bitwise left shift | a « b | T T::operator«(const T2 &b) const; | T operator«(const T &a, const T2 &b); | |||
| bitwise right shift | a » b | T T::operator»(const T2 &b) const; | T operator»(const T &a, const T2 &b); |
연산자 우선순위
| 연산자 설명 | 연산자 | 대체 |
|---|---|---|
| 그룹 1 우선 순위, 결합성 없음 | ||
| 범위 확인 | :: |
|
| 그룹 2 우선 순위(왼쪽에서 오른쪽 연결성) | ||
| 멤버 선택(개체 또는 포인터) | . 또는 -> |
|
| 배열 아래 첨자 | [] |
|
| 함수 호출 | () |
|
| 후위 증가 | ++ |
|
| 후위 감소 | -- |
|
| 형식 이름 | typeid |
|
| 상수 형식 변환 | const_cast |
|
| 동적 형식 변환 | dynamic_cast |
|
| 재해석된 형식 변환 | reinterpret_cast |
|
| 정적 형식 변환 | static_cast |
|
| 그룹 3 우선 순위, 오른쪽에서 왼쪽 연결 | ||
| 개체 또는 형식의 크기 | sizeof |
|
| 접두사 증가 | ++ |
|
| 접두사 감소 | -- |
|
| 하나의 보수 | ~ |
compl |
| 논리하지 않음 | ! |
not |
| 단항 부정 | - |
|
| 단항 더하기 | + |
|
| 주소-of | & |
|
| 간접 참조 | * |
|
| 개체 만들기 | new |
|
| 개체 삭제 | delete |
|
| 캐스트 | () |
|
| 그룹 4 우선 순위(왼쪽에서 오른쪽 연결성) | ||
| 멤버에 대한 포인터(개체 또는 포인터) | .* 또는 ->* |
|
| 그룹 5 우선 순위(왼쪽에서 오른쪽 연결성) | ||
| 곱하기 | * |
|
| 나누기 | / |
|
| 계수 | % |
|
| 그룹 6 우선 순위(왼쪽에서 오른쪽 결합성) | ||
| 더하기 | + |
|
| 빼기 | - |
|
| 그룹 7 우선 순위( 왼쪽에서 오른쪽 결합성) | ||
| 왼쪽 시프트 | << |
|
| 오른쪽 시프트 | >> |
|
| 그룹 8 우선 순위(왼쪽에서 오른쪽 연결성) | ||
| 보다 작음 | < |
|
| 보다 큼 | > |
|
| 작거나 같음 | <= |
|
| 크거나 같음 | >= |
|
| 그룹 9 우선 순위(왼쪽에서 오른쪽 연결성) | ||
| 등호 | == |
|
| 같지 않음 | != |
not_eq |
| 그룹 10 우선 순위 왼쪽에서 오른쪽 결합성 | ||
| 비트 AND | & |
bitand |
| 그룹 11 우선 순위(왼쪽에서 오른쪽 연결성) | ||
| 비트 배타적 OR | ^ |
xor |
| 그룹 12 우선 순위(왼쪽에서 오른쪽 결합성) | ||
| 비트 포함 OR | | |
bitor |
| 그룹 13 우선 순위(왼쪽에서 오른쪽 결합성) | ||
| 논리적 AND | && |
and |
| 그룹 14 우선 순위(왼쪽에서 오른쪽 연결성) | ||
| 논리적 OR | || |
or |
| 그룹 15 우선 순위, 오른쪽에서 왼쪽 결합성 | ||
| 조건부 | ? : |
|
| 양도 | = |
|
| 곱하기 할당 | *= |
|
| 나누기 배정 | /= |
|
| 모듈러스 할당 | %= |
|
| 추가 할당 | += |
|
| 빼기 할당 | -= |
|
| 왼쪽 시프트 할당 | <<= |
|
| 오른쪽 시프트 할당 | >>= |
|
| 비트 AND 할당 | &= |
and_eq |
| 비트 포함 OR 할당 | |= |
or_eq |
| 비트 배타적 OR 할당 | ^= |
xor_eq |
| throw 식 | throw |
|
| 그룹 16 우선 순위(왼쪽에서 오른쪽 결합성) | ||
| Comma | , |
C
Contents
