++a (선처리)
먼저 값을 증가시키고 그 값을 사용한다.
#include <stdio.h>
int main() {
int a = 5;
int b;
b = ++a; // a를 먼저 1 증가시키고, b에 대입
printf("a = %d, b = %d\n", a, b); // a=6, b=6
return 0;
}
a++ (후처리)
현재 값을 먼저 사용하고, 그 뒤에 값을 증가시킨다.
#include <stdio.h>
int main() {
int a = 5;
int b;
b = a++; // b에 먼저 5 대입, 이후 a를 1 증가
printf("a = %d, b = %d\n", a, b); // a=6, b=5
return 0;
}
#include <stdio.h>
int main() {
int i;
printf("전처리:\n");
for(i = 0; i < 3; ++i) {
printf("%d ", i); //결과 0,1,2
}
printf("\n후처리:\n");
for(i = 0; i < 3; i++) {
printf("%d ", i); //결과 0,1,2
}
return 0;
}
반복문에서는 출력결과가 동일하다
하지만 복잡한 식이나 다른 변수와 함께 쓸때 차이가 확실히 난다.
#include <stdio.h>
int main() {
int a = 5;
int result = a++ + ++a;
printf("a = %d, result = %d\n", a, result); //결과 a=5, result=12
return 0;
}
a=5는 초기상태로
a++(후처리)로 a=5+1=6이 되고
++a(전처리)로 a=6+1=7이 된다.
그래서 result의 결과는 5+7=12가 된다.