[C언어] ++가 연속으로 있을 때 출력 순서
C언어에서 ++i 와 i++는 둘 다 i 값을 1 증가시키는 연산자지만, 사용 시점에 차이가 있다.
++i : 전위증가
- 먼저 i를 1 증가시킨 후 사용한다.
- 증가된 값을 반환한다.
i++ : 후위증가
- 먼저 i를 사용한 후 1 증가
- 원래 값을 반환한다.
아래와 같은 문제를 풀 때 Tip!
- 괄호의 맨 뒤에 있는 연산자부터 증감을 시작한다.
- 전위연산자는 값이 실제로 연산을 하기 전까지는 값이 정해지지 않음
- → 연산이 이루어질 때 비소로 값을 가져온다.
- 반면 후위 연산자는 먼저 출력 후 값을 증가한다.
- 전위연산자의 경우 모든 연산이 이루어지고 첫 번째로 값을 가져올 때 출력이 이루어진다.
출력순서 1
#include <stdio.>
int main() {
int i = 5;
printf("%d, %d, %d, %d", i++, ++i, i++, ++i);
}
답: 8, 9, 6, 9
8, i, 6, i (←오른쪽부터 연산 후)
최종 i값인 9를 i 자리에 대입한다.
출력순서 2
#include <stdio.>
int main() {
int i = 5;
printf("%d, %d, %d, %d", --i, i--, i--, i--);
}
답: 1, 3, 4, 1
i, 3, 4, i (←오른쪽부터 연산 후) 최종 1값인 1을 i자리에 대입한다.
출력순서 3
#include <stdio.h>
int main() {
int i = 5;
int z = i++ + i++ + i++
printf("%d, %d", i, z);
}
답: 8, 18
출력순서 4
#include <stdio.h>
int main() {
int i = 5;
int z = ++i + ++i + ++i;
printf("%d, %d", i, z);
}
답: 8, 22
먼저 ++i 가 2번 이루어져 i값이 7일 때 i + i 연산에서 7이 각각 대입된다.
따라서 7 + 7 + ++i = 14 + 8 = 22