C 언어에는 변수의 값을 1씩 늘리거나 줄이는 증가 연산자(++)와 감소 연산자(--)가 있습니다. 이 두 연산자는 각각 전위(prefix) 방식과 후위(postfix) 방식으로 사용할 수 있으며, 연산자가 피연산자 앞에 오느냐 뒤에 오느냐에 따라 실행 결과가 달라집니다.
1. 증가 연산자 (++), Increment Operator
증가 연산자는 변수의 값을 1만큼 증가시키는 단항 연산자입니다. 전위 증가와 후위 증가, 두 가지 형태로 나뉩니다.
전위 증가 연산자 (++a)
연산자를 피연산자 앞에 배치합니다. 이 경우 값이 먼저 증가한 후 해당 값을 다른 변수에 대입하거나 연산에 사용합니다.
z = ++a; // a = a + 1 먼저 실행
// 그 다음 z = a 실행후위 증가 연산자 (a++)
연산자를 피연산자 뒤에 배치합니다. 이 경우 현재 값을 먼저 사용한 후 값이 증가합니다.
z = a++; // 먼저 z = a 실행
// 그 다음 a = a + 1 실행예제 1 — 전위 증가 연산자
main() {
int A = 10, Z;
Z = ++A;
printf("Z= %d", Z);
printf(" A=%d", A);
}실행 결과
Z=11 A=11
A가 먼저 11로 증가한 뒤 Z에 대입되므로, Z와 A 모두 11이 출력됩니다.
예제 2 — 후위 증가 연산자
main() {
int a = 10, z;
z = a++;
printf("Z= %d", z);
printf("A=%d", a);
}실행 결과
Z=10 A=11
Z에는 증가하기 전의 원래 값인 10이 대입되고, 이후 A는 11로 증가합니다.
2. 감소 연산자 (--), Decrement Operator
감소 연산자는 변수의 값을 1만큼 감소시키는 단항 연산자입니다. 마찬가지로 전위 감소와 후위 감소, 두 가지 형태가 있습니다.
전위 감소 연산자 (--a)
연산자를 피연산자 앞에 배치합니다. 값이 먼저 감소한 후 연산에 사용됩니다.
z = --a; // a = a - 1 먼저 실행
// 그 다음 z = a 실행후위 감소 연산자 (a--)
연산자를 피연산자 뒤에 배치합니다. 현재 값을 먼저 사용한 후 값이 감소합니다.
z = a--; // 먼저 z = a 실행
// 그 다음 a = a - 1 실행예제 1 — 전위 감소 연산자
main() {
int a = 10, z;
z = --a;
printf("Z= %d", z);
printf(" A=%d", a);
}실행 결과
Z=9 A=9
a가 먼저 9로 감소한 뒤 z에 대입되므로, 두 변수 모두 9가 출력됩니다.
예제 2 — 후위 감소 연산자
main() {
int a = 10, z;
z = a--;
printf("Z= %d", z);
printf("A=%d", a);
}실행 결과
Z=10 A=9
z에는 감소하기 전의 값인 10이 대입되고, 이후 a는 9로 감소합니다.
정리: 전위 vs 후위 연산자 핵심 차이
전위(++a / --a): 값이 먼저 변경된 후 결과가 사용됩니다.
후위(a++ / a--): 기존 값이 먼저 사용된 후 값이 변경됩니다.
단독으로 사용될 때는 결과가 같지만, 다른 변수에 대입하거나 표현식 내에서 사용할 때는 위 예제처럼 결과가 달라지므로 주의해야 합니다. 반복문에서 카운터를 조작할 때 특히 자주 활용되니 개념을 확실히 익혀두는 것이 좋습니다.