증가 연산자(Increment Operator)는 변수의 값을 1만큼 늘리는 연산자이며, 감소 연산자(Decrement Operator)는 그 반대로 값을 1만큼 줄입니다. C++에서는 증가 연산자를 전위 증가(++i)와 후위 증가(i++) 두 가지 방식으로 사용할 수 있습니다.
전위 증가(++i)와 후위 증가(i++)의 차이
전위 증가(++i) – 값을 변수에 대입하기 전에 먼저 1을 더합니다.
후위 증가(i++) – 값을 변수에 대입한 후에 1을 더합니다.
C++에서 i++와 ++i의 기본 문법은 다음과 같습니다.
++variable_name; // 전위 증가 variable_name++; // 후위 증가
여기서 variable_name은 사용자가 지정한 변수 이름입니다.
C++ 예제 코드
다음은 C++에서 전위 증가와 후위 증가를 보여주는 예제입니다.
#include <iostream>
using namespace std;
int main() {
int i = 5;
cout << "The pre-incremented value: " << i;
while(++i < 10 )
cout<<"\t"<<i;
cout << "\nThe post-incremented value: " << i;
while(i++ < 15 )
cout<<"\t"<<i;
return 0;
}
실행 결과
The pre-incremented value: 56789 The post-incremented value: 101112131415
위 프로그램에서는 main() 함수 안에 전위 증가와 후위 증가 코드가 모두 포함되어 있습니다. 정수형 변수 i는 값이 10보다 작을 때까지 전위 증가(++i)로 처리되고, 이후에는 값이 15보다 작을 때까지 후위 증가(i++)로 처리됩니다.
while(++i < 10 )
printf("%d\t",i);
cout << "\nThe post-incremented vaue : " << i;
while(i++ < 15 )
printf("%d\t",i);
그렇다면 언제 i++ 또는 ++i를 사용해야 할까?
연산자를 단독으로 사용하는 경우(예: for 루프의 증감식) 두 연산자의 동작 결과는 동일합니다. 하지만 다른 표현식 안에서 함께 사용될 때는 결과가 달라지므로 주의해야 합니다.
- 전위 증가(++i): 값을 먼저 증가시킨 뒤 사용하므로, 증가된 값을 곧바로 활용해야 할 때 적합합니다. 특히 int 같은 기본 타입뿐 아니라 STL 반복자(iterator)처럼 임시 객체 생성 비용이 발생할 수 있는 클래스 타입에서는 성능상 ++i를 사용하는 것이 일반적으로 권장됩니다.
- 후위 증가(i++): 현재 값을 먼저 사용한 뒤 증가시키므로, 배열 인덱스 접근 후 카운터를 올리는 등 '기존 값 우선' 로직에 적합합니다.
정리하면, 특별한 이유가 없다면 불필요한 임시 복사를 피하기 위해 ++i를 기본으로 사용하고, 현재 값을 먼저 활용해야 하는 상황에서만 i++를 선택하는 것이 좋은 코딩 습관입니다.