전후위 증감 연산자
C++의 전위 증감연산자와 후위 증감연산자는 동작 방식이 아예 다르다. 기본적으로 증감 연산자에 대한 원리는 다음과 같이 이루어진다.
1 | int prefix_num = 10; |
이렇듯 증감을 언제수행하냐의 차이도 보여지지만 내부적인 동작이 다르다. 컴파일러 코드를 C로 풀어서 쓰면 다음과 같다.
Prefix
1 | int prefixAdd(int num) { |
Postfix
1 | int postfixAdd(int num) { |
그럼 이제 다음과 같은 코드가 어떻게 동작할지 이해할 수 있다.1
2
3
4
5
6
7
8
9
10
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);
}