본문 바로가기
cs

전위, 후위 연산자

by nastorond 2025. 8. 4.

코드리뷰를 하며 나는 잘 사용하지 않던 전위 증가에 대해 문득 궁금증이 들어 찾아보게 됐다.



알고리즘을 풀든 일을 하든 for 문이나 카운트 등에서 항상 cnt++ 이런식으로만 작성해왔는데
다른 글들을 보면 ++cnt 로 써있는 경우가 많았다.


결론부터 써보자면 전위 연산을 사용하는 것이 대부분의 상황에서 후위연산보다 효율적이었다.



둘의 핵심적인 차이는 연산자가 연산 후 반환하는 값에 있었다.

표현 동작 방식 반환값
++cnt 전위 증가 : 값을 먼저 1 증가 시킴 증가된 값
cnt++ 후위 증가 : 값을 먼저 반환하고 1 증가 원래 값



각 동작의 내부 동작을 확인해보면,

후위 증가 내부 동작

//! int res = cnt++;
int temp = cnt;
cnt = cnt + 1;
return temp;

전위 증가 내부 동작

//! int res = ++cnt;
cnt = cnt + 1;
return cnt;



다음과 같이 cnt++임시 변수 생성과 데이터 복사가 일어난다.

int 나 char 와 같은 경우에는 차이가 눈에 띄게 보이지 않을 수 있지만,

map 이나 vector 와 같은 객체에서 사용하는 iterator++ 와 같은 경우는 보이지 않는 곳에서 객체 복사 생성자를 호출해 눈에 띄는 오버헤드를 유발할 가능성이 있다.



cnt++ 과 같은 후위 연산자는 증가 시키기 전 원래 값이 필요한 경우가 아닌 경우에는 안쓰는 것이 좋을 것으로 보인다.

'cs' 카테고리의 다른 글

Singleton Pattern  (0) 2024.06.02
객체지향형과 절차지향형  (0) 2024.05.28