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

C++에서 i++와 ++i의 차이점과 성능 비교 완벽 정리


C++에서 증감 연산자 ++접두사(전위, prefix) 형태와 접미사(후위, postfix) 형태로 사용할 수 있으며, 두 버전 사이에는 중요한 동작상의 차이가 있습니다.

  • 전위 연산자(++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

동작 과정 상세 설명

  • x를 3으로 초기화합니다.

  • y = x++;에서는 후위 연산자가 사용되었으므로, y에는 증가하기 전의 x 값인 3이 할당되고, 이후 x는 4가 됩니다.

  • z = ++x;에서는 전위 연산자가 사용되었으므로, x가 먼저 5로 증가한 다음 z에 그 값인 5가 할당됩니다.

  • 마지막으로 세 변수의 값을 출력하면 5, 3, 5가 나타납니다.

성능 차이는 있을까?

int 같은 기본 자료형의 경우, 현대 컴파일러는 최적화 과정에서 두 연산자의 차이를 없애기 때문에 실질적인 성능 차이는 없습니다. 하지만 클래스 객체에서 연산자 오버로딩이 적용되는 경우에는 상황이 다릅니다. 후위 연산자(i++)는 증가 전의 값을 임시 객체로 복사해서 반환해야 하므로 복사 비용이 추가로 발생할 수 있습니다.

따라서 반복문이나 객체 대상 연산에서는 특별한 이유가 없다면 전위 연산자(++i)를 사용하는 것이 좋은 습관으로 권장됩니다.