증감 연산자 — ++·--의 전위형·후위형과 연산 결과 | 기초 C언어 5.1.3
기초 C언어Chapter 05 연산자 › Section 01 기본 연산자 › 03
5.1.3 증감 연산자의 전위형과 후위형
++a 와 a++ 는 변수를 1 늘리는 것이 같음. 갈리는 것은 그 식이 내놓는 값이 늘기 전인지 뒤인지.
01증감 연산자 — 1 만큼 올리고 내리는 기호교재 126p
- 증감 연산자(Increment/Decrement Operators) — 변수의 값을 1 증가시키는 ++ 와 1 감소시키는 --. 기호를 두 번 겹쳐 적음.
- a++ 는 a = a + 1 과 같은 뜻 — 앞 편의 축약형 a += 1 과도 같음. 1 을 더하는 일이 워낙 잦아 더 짧은 기호를 따로 마련해 둔 것.
- 앞 편의 「등호 오른쪽이 먼저 하나의 값이 됨」 을 그대로 받음 — 그 값을 만드는 과정 안에 변수를 고치는 일까지 들어 있음.
- 변수의 앞에 붙느냐 뒤에 붙느냐 에 따라 동작 순서가 달라짐. 반복문에서 카운터 변수를 조작할 때 아주 흔하게 사용됨.
a++;a = a + 1;a += 1;
02전위형 ++a — 먼저 바꾸고 그 다음 사용교재 126p
- 전위형(Prefix) — 변수 앞에 기호가 붙는 꼴. 먼저 변수 자신의 값을 1 증가·감소시킴.
- 그 다음 바뀐 그 값 을 다른 연산에 사용 — 그 줄이 내놓는 값이 이미 바뀐 값임.
- result = ++a; 에서 a 가 5 였다면 a 도 6 , result 도 6 .
03후위형 a++ — 먼저 쓰고 그 다음 변경교재 127p
- 후위형(Postfix) — 변수 뒤에 기호가 붙는 꼴. 아직 바뀌기 전의 현재 값 을 먼저 다른 연산에 사용.
- 모든 연산이 끝난 뒤에 변수 자신의 값을 1 증가·감소시킴.
- result = a++; 에서 a 가 5 였다면 a 는 6 인데 result 는 5 — 넘어간 값이 바뀌기 전의 값이기 때문.
전체 코드와 줄별 해설은 교재 126p~127p CODE 5.5 · CODE 5.6 에 있습니다.
04두 형태를 나란히 — 기호 자리 하나의 차이교재 128p
result = ++a;result = a++;
1전위형 ++a
- 값 1 증가 → 증가된 값 사용
- a 6 · result 6
2후위형 a++
- 현재 값 사용 → 값 1 증가
- a 6 · result 5
여기서 자주 틀림
어느 쪽이든 a 는 6 이 됨. 갈리는 것은 그 줄이 result 에 넘겨준 값뿐임. 기호가 한 칸 옮겨졌을 뿐이라 두 예제가 눈으로는 거의 같아 보이므로, 남의 코드를 읽을 때 기호가 이름의 앞에 붙었는지 뒤에 붙었는지를 반드시 확인해야 함.
05단독으로 쓰면 두 형태가 같음교재 128p
- a++; · ++a; 처럼 한 줄에 그것만 쓰면 다른 연산과 결합되지 않음 — 최종 결과는 a 의 값이 1 증가하는 것으로 동일.
- 넘겨줄 곳이 없으니 차례를 따질 일도 없음.
- 두 형태를 가려 써야 하는 자리 — 그 값을 다른 연산에 넘길 때.
이 절의 핵심 정리
- ++ 와 -- 는 변수 값을 1 증가·감소시킨다.
- a++ 는 a = a + 1, a += 1 과 같은 뜻이다.
- 전위형 ++a 는 먼저 바꾸고 바뀐 값을 내놓는다.
- 후위형 a++ 는 현재 값을 먼저 내놓고 그 뒤에 바꾼다.
- a 가 5 일 때 result = a++; 는 result 에 5 를 남긴다.
강의 자료5.1.3 증감 연산자의 전위형과 후위형
1 / 10
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다

댓글
댓글 쓰기