[Modern C++] Prefix Operator Postfix Operator

전후위 증감 연산자

C++의 전위 증감연산자와 후위 증감연산자는 동작 방식이 아예 다르다. 기본적으로 증감 연산자에 대한 원리는 다음과 같이 이루어진다.

1
2
3
4
5
int prefix_num = 10;
int prefix = ++a; //prefix_num = 11 prefix = 11

int postfix_num = 10;
int postfix = a++; //postfix_num = 11 postfix = 10

이렇듯 증감을 언제수행하냐의 차이도 보여지지만 내부적인 동작이 다르다. 컴파일러 코드를 C로 풀어서 쓰면 다음과 같다.

Prefix

1
2
3
int prefixAdd(int num) {
return num + 1;
}

Postfix

1
2
3
4
5
int postfixAdd(int num) {
int ret = num;
ret = ret + 1;
return ret;
}

그럼 이제 다음과 같은 코드가 어떻게 동작할지 이해할 수 있다.

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
void func(int a, int b) {
printf("%d %d\n", a, b);
}
int main(int argc, char** argv){
int n = 10;
func(++n, n++);
n = 10;
func(n++, ++n);
}

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/21/Languages/Cplusplus/prefix-postfix-operator/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.