C++에서 증가 연산자(++)는 피연산자에 1을 더하고, 감소 연산자(--)는 피연산자에서 1을 뺍니다. 즉, 다음 두 코드는 동일한 의미입니다.
x = x + 1; → x++;
마찬가지로 감소 연산자도 아래와 같이 표현할 수 있습니다.
x = x - 1; → x--;
전위(Prefix)와 후위(Postfix) 표기법
증가 및 감소 연산자는 피연산자의 앞에 위치하는 전위(prefix) 방식과 뒤에 위치하는 후위(postfix) 방식, 두 가지 형태로 사용할 수 있습니다.
x = x + 1; → ++x;
전위와 후위의 중요한 차이점
증가 또는 감소 연산이 하나의 표현식(expression) 내에서 사용될 때, 전위와 후위 형태 사이에는 매우 중요한 차이가 있습니다.
- 전위형(++i): 변수 i의 값이 먼저 1 증가한 후, 그 새로운 값이 표현식의 결과값이 됩니다. 즉, 먼저 증가시키고 나서 값을 할당합니다.
- 후위형(i++): 표현식의 결과값은 증가되기 전의 원래 값 i이며, 그 후에 변수 값이 1 증가합니다. 즉, 먼저 값을 할당하고 나서 변수를 증가시킵니다.
예제 코드
코드를 통해 더 명확하게 이해해 보겠습니다.
#include<iostream>
using namespace std;
int main() {
int x = 3, y, z;
y = x++; // 후위 증가: y에는 증가 전 값(3)이 대입됨
z = ++x; // 전위 증가: z에는 증가 후 값(5)이 대입됨
cout << x << ", " << y << ", " << z;
return 0;
}실행 결과
5, 3, 5
결과 분석
왜 이런 결과가 나오는지 단계별로 살펴보겠습니다.
- x를 3으로 초기화합니다.
- y = x++; — 후위 증가 연산이므로, 표현식을 평가할 때 증가되기 전의 값인 3이 y에 대입된 후, x가 4로 증가합니다.
- z = ++x; — 전위 증가 연산이므로, x가 먼저 5로 증가한 후 그 새로운 값인 5가 z에 대입됩니다.
- 출력: x는 5, y는 3, z는 5이므로 최종적으로
5, 3, 5가 출력됩니다.
이처럼 증감 연산자는 단독으로 사용할 때는 전위와 후위의 차이가 없지만, 다른 표현식 안에서 함께 사용될 때는 평가 순서에 따라 결과가 크게 달라질 수 있습니다. 따라서 코드 작성 시 어떤 형태를 사용할지 항상 주의해야 합니다.