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

C++에서 전위 증가(++i)와 후위 증가(i++)의 차이점 완벽 정리

C++에서 ++ 연산자는 전위(prefix) 방식과 후위(postfix) 방식 두 가지로 사용할 수 있으며, 이 둘은 동작 결과에 중요한 차이가 있습니다.

전위 증가(++i)와 후위 증가(i++)의 차이

  • 전위 버전(++i): 변수 i의 값을 먼저 1 증가시킨 후, 그 표현식의 값은 증가된 새로운 값이 됩니다. 즉, '먼저 증가하고, 그다음 값을 반환'합니다.
  • 후위 버전(i++): 변수 i의 값은 1 증가하지만, 그 표현식의 값은 증가하기 전의 원래 값입니다. 즉, '먼저 기존 값을 반환하고, 그다음에 증가'합니다.

예제 코드

코드를 통해 더 명확하게 이해해 보겠습니다.

#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

결과 분석

왜 이런 결과가 나오는지 단계별로 살펴보겠습니다.

  • 1단계: 변수 x를 3으로 초기화합니다.
  • 2단계: y = x++; — 후위 증가이므로, 증가하기 전의 값인 3y에 대입된 후 x는 4가 됩니다.
  • 3단계: z = ++x; — 전위 증가이므로, x가 먼저 5로 증가한 후 그 값인 5z에 대입됩니다.
  • 4단계: 최종적으로 x, y, z의 값인 5, 3, 5가 출력됩니다.

정리 및 성능 팁

요약하면, ++i는 증가 후의 값을 반환하고, i++는 증가 전의 값을 반환합니다. 특히 C++에서 정수형뿐 아니라 반복자(iterator) 같은 객체에 대해 증가 연산을 수행할 때는, 후위 버전이 임시 객체를 추가로 생성해야 하므로 불필요한 오버헤드가 발생할 수 있습니다. 따라서 반환되는 값을 사용할 필요가 없다면 전위 증가(++i)를 사용하는 것이 일반적으로 더 효율적입니다.