C++에서 증감 연산자는 전위(prefix) 방식과 후위(postfix) 방식 두 가지로 사용할 수 있습니다. 두 방식 모두 변수의 값을 1만큼 증가시키지만, 표현식이 반환하는 값에서 중요한 차이가 있습니다.
전위 연산자(++i)와 후위 연산자(i++)의 동작 원리
전위 연산자(++i)는 변수 i의 값을 먼저 증가시킨 후, 그 표현식의 값으로 증가된 새로운 값을 반환합니다. 즉, '먼저 증가하고, 나중에 값을 할당'하는 방식입니다.
반면 후위 연산자(i++)는 변수 i의 값을 증가시키기는 하지만, 표현식의 값으로는 증가하기 전의 원래 값을 반환합니다. 즉, '먼저 값을 할당하고, 나중에 증가'하는 방식입니다.
예제 코드
실제 코드를 통해 두 연산자의 차이를 자세히 살펴보겠습니다.
#include<iostream>
using namespace std;
int main() {
int x = 3, y, z;
y = x++;
z = ++x;
cout << x << ", " << y << ", " << z;
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
5, 3, 5
결과 분석
왜 이런 결과가 나오는지 단계별로 살펴보겠습니다.
- x를 3으로 초기화합니다.
y = x++;— 후위 연산자이므로 먼저 증가하기 전의 x 값(3)을 y에 할당한 뒤, x를 4로 증가시킵니다. 따라서 y = 3입니다.z = ++x;— 전위 연산자이므로 먼저 x를 5로 증가시킨 뒤, 증가된 값(5)을 z에 할당합니다. 따라서 z = 5입니다.- 마지막으로 x, y, z의 값을 출력하면 5, 3, 5가 됩니다.
정리
결론적으로, 전위 연산자(++i)는 '증가 후 사용', 후위 연산자(i++)는 '사용 후 증가'라는 핵심 차이가 있습니다. 단독 문장으로 사용할 때는 결과가 같지만, 다른 표현식 내에서 사용될 때는 반환되는 값이 달라지므로 상황에 맞게 올바르게 선택해야 합니다.