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

C/C++ 전위 증가(++x)와 후위 증가(x++) 연산자의 차이 완벽 정리

C나 C++에서 전위 증가(pre-increment)후위 증가(post-increment)는 모두 값을 1씩 늘리는 증가 연산자입니다. 하지만 두 연산자는 동작 방식에서 중요한 차이를 보이기 때문에, 이를 정확히 이해하는 것은 C/C++ 프로그래밍의 기본기 중 하나입니다.

전위 증가와 후위 증가의 동작 원리

전위 증가 연산자(++변수)는 변수의 값을 먼저 1 증가시킨 후, 그 결과를 다른 변수에 대입합니다. 반면 후위 증가 연산자(변수++)는 현재 값을 먼저 다른 변수에 대입한 뒤에야 원래 변수의 값을 1 증가시킵니다.

즉, 대입 시점이 증가보다 앞서느냐 뒤서느냐가 두 연산자의 핵심적인 차이라고 할 수 있습니다.

예제 코드

아래 예제를 통해 두 연산자의 동작 차이를 직접 확인해 보겠습니다.

#include<iostream>
using namespace std;

int main() {
    int x, y, z;
    x = 10;
    y = 10;

    z = ++x; // x를 먼저 11로 증가시킨 후 z에 대입 → z는 11
    cout << "Z: " << z << endl;

    z = y++; // y의 현재 값 10을 먼저 z에 대입한 후 y를 11로 증가
    cout << "Z: " << z << " and y is: " << y << endl;

    return 0;
}

실행 결과

Z: 11
Z: 10 and y is: 11

결과 분석

z = ++x; 구문에서는 x의 값이 먼저 11로 증가한 뒤 z에 대입되므로 z는 11이 됩니다. 반면 z = y++; 구문에서는 y의 기존 값인 10이 먼저 z에 대입된 후 y가 11로 증가하기 때문에, z는 10이고 y만 11이 됩니다.

연산자 우선순위와 결합 방향

두 연산자는 우선순위(precedence)에서도 차이를 보입니다. 후위 증가 연산자가 전위 증가 연산자보다 더 높은 우선순위를 가집니다. 또한 결합 방향(associativity)도 서로 다릅니다.

  • 전위 증가(++x): 오른쪽에서 왼쪽으로 결합 (right-to-left)
  • 후위 증가(x++): 왼쪽에서 오른쪽으로 결합 (left-to-right)

이러한 차이 때문에 복잡한 표현식 안에서 증가 연산자를 사용할 때는 의도하지 않은 결과가 나올 수 있으므로 주의가 필요합니다. 가독성과 유지보수를 고려하면, 하나의 문장에서 증가 연산과 대입을 동시에 수행하기보다는 별도의 문장으로 나누어 작성하는 것이 좋은 코딩 스타일로 권장됩니다.