[C/C++] 5. 증감 연산자

찰규

·

2026년 8월 1일 (30일 전)

앞서 산술 연산자와 우선순위에 대해 알아보았다. 이번 글에서는 변수의 값을 간편하게 증가시키거나 감소시키는 증감 연산자(++, --), 그리고 많은 초보자가 헷갈려 하는 전위(Prefix)와 후위(Postfix) 방식의 차이점을 정리한다.

1. 증감 연산자란?

증감 연산자는 변수의 값을 한 단계 증가시키거나 감소시키는 단항 연산자다.

  • ++ (증가 연산자): 변수의 값을 1 증가시킨다.

  • -- (감소 연산자): 변수의 값을 1 감소시킨다.

int a = 10;
a++; // a = a + 1 또는 a += 1 과 동일한 효과 (a는 11이 됨)

💡 올바른 개념 잡기: 단순히 "1이 더해진다"보다는 **"다음 단계로 이동한다"**로 이해하는 것이 좋다. 나중에 학습할 포인터(Pointer) 연산에서는 피연산자의 자료형 크기에 따라 '한 단계'의 이동 단위가 4바이트, 8바이트 등으로 달라지기 때문이다.

2. 증감 연산자의 위치: 전위(Prefix) vs 후위(Postfix)

증감 연산자는 변수의 앞이나 뒤 중 어디에 붙이느냐에 따라 연산의 우선순위가 완전히 달라진다.

1) 전위 연산자 (++a, --a)

  • 원리: "선 증가, 후 연산"

  • 변수의 값을 먼저 증가시킨 후, 해당 라인의 다른 연산(대입 등)을 수행한다.

int a = 10;
int data = ++a; 
// 1. a가 먼저 11로 증가
// 2. 증가된 값 11이 data에 대입됨 (data: 11, a: 11)

2) 후위 연산자 (a++, a--)

  • 원리: "선 연산, 후 증가"

  • 해당 라인의 모든 연산을 먼저 처리한 후, 가장 마지막에 변수의 값을 증가시킨다. (대입 연산자보다도 우선순위가 낮다)

int a = 10;
int data = a++; 
// 1. a의 현재 값(10)이 data에 먼저 대입됨
// 2. 대입이 끝난 후 a가 11로 증가함 (data: 10, a: 11)

3. 전위 방식(++a)을 사용하는 습관이 좋은 이유

단독으로 a++; 또는 ++a;를 사용할 때는 결과에 차이가 없다. 하지만 실무나 객체지향 프로그래밍(C++)에서는 전위 방식을 기본적으로 사용하는 습관을 들이는 것이 권장된다.

  1. 복합 연산 시의 실수를 방지: 후위 연산자는 연산 순서가 직관적이지 않아 버그를 유발하기 쉽다.

  2. 성능상의 이점 (클래스 및 객체):

    • C++에서 사용자 정의 객체(클래스/구조체)에 증감 연산자를 오버로딩할 때, 후위 연산자는 값이 변경되기 전의 상태를 저장해 둘 임시 객체를 생성해야 한다.

    • 따라서 불필요한 복사 비용이 발생할 수 있으므로, 특별한 사유가 없다면 전위 연산자(++var)를 사용하는 것이 성능상 유리하다.

마무리하며

  • 증감 연산자는 단순 1 증가가 아닌 "다음 단계로의 이동"으로 이해하는 것이 포인터 개념 확장에 도움이 된다.

  • 전위(++a)는 증가 후 대입, 후위(a++)는 대입 후 증가한다.

  • 코드의 직관성과 가독성을 위해 특별한 이유가 없다면 전위 방식을 우선 사용하자.