C++에는 다섯 가지 기본 산술 연산자가 있습니다.
- 덧셈 (+)
- 뺄셈 (-)
- 나눗셈 (/)
- 곱셈 (*)
- 나머지 (%)
기본 산술 연산자 예제
이 연산자들은 C++에서 모든 산술 연산에 사용할 수 있습니다. 실제 예제를 통해 살펴보겠습니다.
#include <iostream>
using namespace std;
int main() {
int a = 21;
int b = 10;
int c;
c = a + b;
cout << "Line 1 - Value of c is :" << c << endl;
c = a - b;
cout << "Line 2 - Value of c is :" << c << endl;
c = a * b;
cout << "Line 3 - Value of c is :" << c << endl;
c = a / b;
cout << "Line 4 - Value of c is :" << c << endl;
c = a % b;
cout << "Line 5 - Value of c is :" << c << endl;
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Line 1 - Value of c is :31 Line 2 - Value of c is :11 Line 3 - Value of c is :210 Line 4 - Value of c is :2 Line 5 - Value of c is :1
여기서 주목할 점은 나눗셈 연산입니다. 정수형 변수끼리 나눗셈을 하면 소수점 이하는 버려지므로 21 / 10의 결과는 2.1이 아닌 2가 됩니다. 또한 나머지 연산자 %는 두 정수를 나눈 후 남는 값을 반환하므로 21 % 10의 결과는 1입니다.
복합 대입 연산자
C++에서는 위의 기본 연산자 외에도 복합 산술 대입 연산자(compound arithmetic assignment operator)를 제공합니다. 이 연산자는 e1 op= e2 형태로 표현되며, 여기서 e1은 const 타입이 아닌 수정 가능한 l-value이고, e2는 다음 중 하나여야 합니다.
- 산술 타입(arithmetic type)
- 포인터 타입 (단, op가 + 또는 -인 경우에 한함)
e1 op= e2 형태는 e1 = e1 op e2와 동일하게 동작하지만, e1은 한 번만 평가된다는 차이점이 있습니다. 이는 성능 면에서 유리할 수 있으며 코드를 더 간결하게 만들어 줍니다.
C++에서 사용할 수 있는 복합 산술 대입 연산자는 다음과 같습니다.
| 연산자 | 설명 |
|---|---|
*= | 첫 번째 피연산자의 값에 두 번째 피연산자의 값을 곱한 후, 결과를 첫 번째 피연산자가 지정한 객체에 저장합니다. |
/= | 첫 번째 피연산자의 값을 두 번째 피연산자의 값으로 나눈 후, 결과를 첫 번째 피연산자가 지정한 객체에 저장합니다. |
%= | 첫 번째 피연산자를 두 번째 피연산자의 값으로 나눈 나머지를 구한 후, 결과를 첫 번째 피연산자가 지정한 객체에 저장합니다. |
+= | 첫 번째 피연산자의 값에 두 번째 피연산자의 값을 더한 후, 결과를 첫 번째 피연산자가 지정한 객체에 저장합니다. |
-= | 첫 번째 피연산자의 값에서 두 번째 피연산자의 값을 뺀 후, 결과를 첫 번째 피연산자가 지정한 객체에 저장합니다. |
복합 대입 연산자 예제
복합 대입 연산자를 활용한 예제를 살펴보겠습니다.
#include<iostream>
using namespace std;
int main() {
int a = 3, b = 2;
a += b; // a = a + b
cout << a << endl;
a -= b; // a = a - b
cout << a << endl;
a *= b; // a = a * b
cout << a << endl;
a /= b; // a = a / b
cout << a << endl;
return 0;
}실행 결과는 다음과 같습니다.
5 3 6 3
코드의 진행 과정을 단계별로 살펴보면 다음과 같습니다.
a += b→ a는 3 + 2 = 5a -= b→ a는 5 - 2 = 3a *= b→ a는 3 × 2 = 6a /= b→ a는 6 ÷ 2 = 3
주의 사항
복합 대입 연산자를 사용할 때 몇 가지 유의해야 할 규칙이 있습니다.
- 열거형(enumerated type)에 대한 복합 대입은 컴파일 오류 메시지를 발생시킵니다.
- 왼쪽 피연산자가 포인터 타입이라면, 오른쪽 피연산자는 포인터 타입이거나 0으로 평가되는 상수 표현식이어야 합니다.
- 왼쪽 피연산자가 정수형(integral type)이라면, 오른쪽 피연산자는 포인터 타입이 아니어야 합니다.
이러한 규칙을 지키면 복합 대입 연산자를 안전하고 효율적으로 활용하여 더 깔끔한 C++ 코드를 작성할 수 있습니다.