..

Search

12) 산술 연산자

12) 산술 연산자

산술 연산자


연산자(operator)

C++은 여러 종류의 연산을 위해 다양한 연산자(operator)를 제공하고 있습니다.


산술 연산자(arithmetic operator)

산술 연산자는 사칙연산을 다루는 기본적이면서도 가장 많이 사용되는 연산자입니다.

산술 연산자는 모두 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽입니다.

 

항이란 해당 연산의 실행이 가능하기 위해 필요한 값이나 변수를 의미합니다.
따라서 이항 연산자란 해당 연산의 실행을 위해서 두 개의 값이나 변수가 필요한 연산자를 의미합니다.

 

산술 연산자 설명
+ 왼쪽의 피연산자에 오른쪽의 피연산자를 더함.
- 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌.
* 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함.
/ 왼쪽의 피연산자를 오른쪽의 피연산자로 나눔.
% 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환함.

 

예제

int num1 = 10;

int num2 = 4;

 

cout << "+ 연산자에 의한 결괏값은 " << num1 + num2 << "입니다." << endl;

cout << "- 연산자에 의한 결괏값은 " << num1 - num2 << "입니다." << endl;

cout << "* 연산자에 의한 결괏값은 " << num1 * num2 << "입니다." << endl;

cout << "/ 연산자에 의한 결괏값은 " << num1 / num2 << "입니다." << endl;

cout << "% 연산자에 의한 결괏값은 " << num1 % num2 << "입니다.";

코딩연습 ▶

실행 결과

+ 연산자에 의한 결괏값은 14입니다.

- 연산자에 의한 결괏값은 6입니다.

* 연산자에 의한 결괏값은 40입니다.

/ 연산자에 의한 결괏값은 2입니다.

% 연산자에 의한 결괏값은 2입니다.


연산자의 우선순위(operator precedence)와 결합 방향(associativity)

연산자의 우선순위는 수식 내에 여러 연산자가 함께 등장할 때, 어느 연산자가 먼저 처리될 것인가를 결정합니다.

 

다음 그림은 가장 높은 우선순위를 가지고 있는 괄호(()) 연산자를 사용하여 연산자의 처리 순서를 변경하는 것을 보여줍니다.

연산자 우선순위

 

연산자의 결합 방향은 수식 내에 우선순위가 같은 연산자가 둘 이상 있을 때, 먼저 어느 연산을 수행할 것인가를 결정합니다.

연산자 결합방향


C++ 연산자의 우선순위표

우선순위 연산자 설명 결합 방향
1 :: 범위 지정 연산자 -
2 ++ 후위 증가 연산자 왼쪽에서 오른쪽으로
  -- 후위 감소 연산자 왼쪽에서 오른쪽으로
  () 함수 호출 왼쪽에서 오른쪽으로
  [] 첨자 연산자 왼쪽에서 오른쪽으로
  . 멤버 연산자 왼쪽에서 오른쪽으로
  -> 멤버 접근 연산자 왼쪽에서 오른쪽으로
  typeid 타입 인식 왼쪽에서 오른쪽으로
  const_cast 상수 타입 변환 왼쪽에서 오른쪽으로
  dynamic_cast 동적 타입 변환 왼쪽에서 오른쪽으로
  reinterpret_cast 재해석 타입 변환 왼쪽에서 오른쪽으로
  static_cast 정적 타입 변환 왼쪽에서 오른쪽으로
3 ! 논리 NOT 연산자 오른쪽에서 왼쪽으로
  ~ 비트 NOT 연산자 오른쪽에서 왼쪽으로
  + 양의 부호 (단항 연산자) 오른쪽에서 왼쪽으로
  - 음의 부호 (단항 연산자) 오른쪽에서 왼쪽으로
  ++ 전위 증가 연산자 오른쪽에서 왼쪽으로
  -- 전위 감소 연산자 오른쪽에서 왼쪽으로
  (타입) 타입 캐스트 연산자 오른쪽에서 왼쪽으로
  * 참조 연산자 (단항 연산자) 오른쪽에서 왼쪽으로
  & 주소 연산자 (단항 연산자) 오른쪽에서 왼쪽으로
  sizeof 크기 연산자 오른쪽에서 왼쪽으로
  new 객체 생성 오른쪽에서 왼쪽으로
  delete 객체 제거 오른쪽에서 왼쪽으로
4 .* 멤버 포인터 연산자 왼쪽에서 오른쪽으로
  ->* 참조 멤버 포인터 연산자 왼쪽에서 오른쪽으로
5 * 곱셈 연산자 왼쪽에서 오른쪽으로
  / 나눗셈 연산자 왼쪽에서 오른쪽으로
  % 나머지 연산자 왼쪽에서 오른쪽으로
6 + 덧셈 연산자 (이항 연산자) 왼쪽에서 오른쪽으로
  - 뺄셈 연산자 (이항 연산자) 왼쪽에서 오른쪽으로
7 << 비트 왼쪽 시프트 연산자 왼쪽에서 오른쪽으로
  >> 부호 비트를 확장하면서 비트 오른쪽 시프트 왼쪽에서 오른쪽으로
8 < 관계 연산자(보다 작은) 왼쪽에서 오른쪽으로
  <= 관계 연산자(보다 작거나 같은) 왼쪽에서 오른쪽으로
  > 관계 연산자(보다 큰) 왼쪽에서 오른쪽으로
  >= 관계 연산자(보다 크거나 같은) 왼쪽에서 오른쪽으로
9 == 관계 연산자(와 같은) 왼쪽에서 오른쪽으로
  != 관계 연산자(와 같지 않은) 왼쪽에서 오른쪽으로
10 & 비트 AND 연산자 왼쪽에서 오른쪽으로
11 ^ 비트 XOR 연산자 왼쪽에서 오른쪽으로
12 | 비트 OR 연산자 왼쪽에서 오른쪽으로
13 && 논리 AND 연산자 왼쪽에서 오른쪽으로
14 || 논리 OR 연산자 왼쪽에서 오른쪽으로
15 ? : 삼항 조건 연산자 오른쪽에서 왼쪽으로
16 =

대입 연산자 및 복합 대입 연산자

(=, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=)

오른쪽에서 왼쪽으로
17 throw 예외 발생 왼쪽에서 오른쪽으로
18 , 쉼표 연산자 왼쪽에서 오른쪽으로

 

위의 표에서 나온 순서대로 우선순위가 빠른 연산자가 가장 먼저 실행됩니다.

또한, 같은 우선순위를 가지는 연산자가 둘 이상 있을 때에는 결합 순서에 따라 실행 순서가 결정됩니다.

 

위의 표를 모두 외우기보다는 필요할 때마다 참조하는 것이 좋습니다.

연습문제