i++와 ++i의 효과적인 결과는 동일합니다. 유일한 차이점은 i++는 할당 후 i의 값을 증가시키고 ++i의 경우 먼저 값을 증가시킨 다음 값을 할당한다는 것입니다. 다음 코드에서 차이점을 확인할 수 있습니다.
예시 코드
#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
이제 동일한 작업을 수행하지만 다른 순서로 수행하므로 성능 문제가 있는 것인지 아니면 둘 다 동일한 것인지에 대한 질문이 나옵니다.
음, 이러한 작업의 성능은 기본 아키텍처에 크게 의존합니다. 하나는 메모리에 저장된 값을 증가시키는 것입니다. 이는 Von-Neumann 병목 현상이 기본적으로 두 경우 모두에서 제한 요소임을 의미합니다.
++i가 i++보다 약간 더 빠릅니다. i++는 증가하기 전에 i 값의 로컬 복사본을 사용하지만 ++i는 절대 그렇지 않습니다. 때때로 일부 컴파일러는 가능한 경우 코드를 최적화합니다. 그러나 그 최적화가 항상 효과적인 것은 아니며 모든 컴파일러가 이 작업을 수행하는 것은 아닙니다.