본문 바로가기
C 언어/기초 문법

[5장] C언어 연산자와 연산식 (2) – 증감 연산자 (++ / --)

by Autosar 2026. 5. 8.
반응형

산술 연산자가 값을 계산하는 연산자라면,
증감 연산자는 변수의 값을 직접 변경하면서 동시에 그 값을 표현식으로 반환하는 연산자다.

 

이 “두 가지 동작이 동시에 일어난다”는 점 때문에 초보자뿐 아니라 실무에서도 실수가 자주 발생한다.

 

1. 증감 연산자의 기본 동작

 

다음 코드를 보자.

int a = 10;
a++;

 

이 코드는 단순히 a의 값을 1 증가시킨다.

 

실행 결과:

a = 11;

 

여기까지는 문제 없다.

하지만 이 코드를 “식(expression)” 안에 넣는 순간 상황이 달라진다.

 

2. 표현식에서의 증감 연산자

 

C언어에서 대부분의 연산자는 “값을 반환”한다.

증감 연산자도 예외가 아니다.

a++;

 

즉, 이 코드는 단순 명령이 아니라 하나의 값으로 평가되는 표현식이다.

 

이때 중요한 질문이 생긴다.

“증가되기 전 값이 반환되는가, 증가된 값이 반환되는가?”

 

이 질문의 답이 전위/후위 개념이다.

 

3. 후위 증가 (a++) – 사용 후 증가

 

다음 코드를 보자.

int a = 10;
int b = a++;

 

이 코드는 한 줄이지만 내부적으로는 순서가 존재한다.

 

실행 순서

1. a의 현재 값(10)을 읽는다.
2. 그 값을 b에 저장한다.
3. 그 다음 a를 1 증가시킨다.

 

결과

a = 11;
b = 10;

 

즉, a++는 “현재 값을 먼저 사용하고, 이후 증가”한다.

 

4. 전위 증가 (++a) – 증가 후 사용

 

이번에는 전위 연산이다.

int a = 10;
int b = ++a;

 

실행 순서

1. a를 먼저 1 증가시킨다. (10 → 11)
2. 증가된 값을 읽는다.
3. b에 저장한다.

 

결과

a = 11;
b = 11;

 

즉, ++a는 “먼저 증가하고, 그 값을 사용”한다.

 

5. 두 연산자의 본질적인 차이

 

이 차이를 단순히 외우면 금방 헷갈린다.

핵심은 “언제 값이 바뀌는가”다.

 

표현 동작 흐름

a++ 값 사용 → 값 증가
++a 값 증가 → 값 사용

 

이걸 이해하면 어떤 상황에서도 헷갈리지 않는다.

6. 왜 이런 구조가 필요한가

 

증감 연산자는 단순 편의 기능이 아니다.

코드의 흐름을 간결하게 만들기 위해 존재한다.

 

대표적인 예가 반복문이다.

for (int i = 0; i < 10; i++)
{
    // 반복 실행
}

 

이 코드는 다음 의미를 가진다.

1. i = 0으로 시작
2. 조건 검사
3. 반복 수행
4. i를 1 증가
5. 다시 조건 검사

 

여기서 i++는 반복 흐름을 자연스럽게 이어주는 역할을 한다

 

7. 증감 연산자와 표현식의 결합 (주의)

 

문제는 증감 연산자를 다른 연산과 섞을 때 발생한다.

int a = 10;
int b = a++ + 5;

 

이 코드를 단계적으로 보면

1. a의 현재 값(10)을 사용
2. 10 + 5 → 15
3. 그 다음 a는 11이 됨

 

결과

a = 11;
b = 15;

 

8. 안전한 사용 방법

 

증감 연산자는 반드시 아래 원칙을 지켜야 한다.

 

원칙 1: 한 표현식에서 한 번만 사용

a++;
b = a + 5;

 

원칙 2: 다른 연산과 섞지 않는다
// 위험

b = a++ + 5;

 

// 안전

b = a + 5;
a++;

 

원칙 3: 흐름이 보이게 작성한다

“짧은 코드”보다 “명확한 코드”가 중요하다

 

9. 실무 관점에서의 의미

 

증감 연산자는 단순 문법이 아니다.

실제에서는 다음과 같이 사용된다.

- 반복 제어 (for, while)
- 배열 인덱스 이동
- 버퍼 처리
- 포인터 이동

 

즉, “순차적으로 값을 변화시키는 모든 구조”에 사용된다.

 

정리

 

증감 연산자는 다음 두 가지를 동시에 수행한다.

 

- 변수 값을 변경한다.

- 그 값을 하나의 결과로 반환한다.

 

그리고 전위/후위의 차이는 단 하나다.

값이 변경되는 시점과, 그 값이 사용되는 시점의 차이

 

이걸 정확히 이해하면 이후 포인터, 배열, 반복문까지 자연스럽게 연결된다.

반응형