Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 산술 연산자 완벽 정리: 기본 연산자부터 복합 대입 연산자까지

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 = 5
  • a -= b → a는 5 - 2 = 3
  • a *= b → a는 3 × 2 = 6
  • a /= b → a는 6 ÷ 2 = 3

주의 사항

복합 대입 연산자를 사용할 때 몇 가지 유의해야 할 규칙이 있습니다.

  • 열거형(enumerated type)에 대한 복합 대입은 컴파일 오류 메시지를 발생시킵니다.
  • 왼쪽 피연산자가 포인터 타입이라면, 오른쪽 피연산자는 포인터 타입이거나 0으로 평가되는 상수 표현식이어야 합니다.
  • 왼쪽 피연산자가 정수형(integral type)이라면, 오른쪽 피연산자는 포인터 타입이 아니어야 합니다.

이러한 규칙을 지키면 복합 대입 연산자를 안전하고 효율적으로 활용하여 더 깔끔한 C++ 코드를 작성할 수 있습니다.