C언어 증감 연산자는 +1
을 더하거나 +1
을 감소시키는데 사용합니다. ++i
는 변수 i
를 1
증가시키고, ++i
자기 자신도 바로 1
증가 됩니다. i++
는 변수 i
를 1
증가시키지만, i++
자기 자신은 바로 증가되지 않습니다.
C언어 증감 연산자
C언어 증감 연산자는 i = i + 1 또는 i = 1 – 1 을 요약해서 쓸 때 사용합니다. ++
또는 --
기호가 변수의 앞 또는 뒤에 붙는 위치에 따라서 결과가 조금씩 달라질 수 있습니다.
연산자 | 예제 | 정답 |
---|---|---|
++i |
int i = 3; 일 때 printf("%d", ++i); |
++i = 4 (i = 4) |
i++ |
int i = 3; 일 때 printf("%d", i++); |
i++ = 3 (i = 4) |
--i |
int i = 3; 일 때 printf("%d", --i); |
--i = 2 (i = 2) |
|
int i = 3; 일 때 printf("%d", i--); |
i-- = 3 (i = 2) |
++i
++i
는 변수 i
의 값을 1
증가시킵니다. 그리고 ++i
의 값도 바로 1
이 증가됩니다.
#include<stdio.h>
void main() {
int i; //정수형 자료형(int) 조건으로 변수 i를 생성합니다.
i = 3; //변수 i에 변수값 3을 대입합니다.
printf("%d\n", ++i); //변수 i를 1증가시키고, ++i 자신도 1이 증가합니다.
printf("%d", i); //변수 i를 출력합니다.
}
결과
4
4
i++
i++
의 경우 똑같이 변수 i
의 값을 증가시킵니다. 하지만 i++
자체는 바로 증가되지 않습니다.
#include<stdio.h>
void main() {
int i; //정수형 자료형(int) 조건으로 변수 i를 생성합니다.
i = 3; //변수 i에 변수값 3을 대입합니다.
printf("%d\n", i++); //변수 i를 1증가시키지만, i++ 자신은 증가되지 않습니다.
printf("%d", i); //변수 i를 출력합니다.
}
결과
3
4
++i vs i++
++i
는 i
를 1
증가시키고, ++i
자기 자신도 1
증가됩니다. i++
은 i
를 1
증가시키지만, i++
자기 자신은 증가되지 않습니다.
#include<stdio.h>
void main() {
int i; //정수형 자료형(int) 조건으로 변수 i를 생성합니다.
i = 3; //변수 i에 변수값 3을 대입합니다.
printf("%d\n", i++); //변수 i를 3에서 4로 1 증가시킵니다. 하지만 i++ 자신은 변하지 않으므로 3이 그대로 출력됩니다.
printf("%d", ++i); //현재 변수 i는 4로 변한상태입니다. ++i는 변수 i를 1증가시키고, 자기 자신도 1증가시키므로 ++i는 5가 출력됩니다.
}
결과
3
5
++i vs i++ 연속 사용 비교
++i
는 연속적으로 사용하면 변수 i
와 ++i
자기 자신을 바로 1
증가시키므로 일반적으로 예상되는 +1
씩 정량적인 증가 흐름을 보여줍니다.
#include<stdio.h>
void main() {
int i;
i = 3;
printf("%d\n", ++i); //변수 i는 3에서 4로 증가합니다. ++i도 4입니다.
printf("%d\n", ++i); //현재 변수 i는 4이고 5로 증가합니다. ++i도 5입니다.
printf("%d\n", ++i); //현재 변수 i는 5이고 6으로 증가합니다. ++i도 6입니다.
printf("%d\n", ++i); //현재 변수 i는 6이고 7로 증가합니다. ++i도 7입니다.
printf("%d", ++i); //현재 변수 i는 7이고 8로 증가합니다. ++i도 8입니다.
}
결과
4
5
6
7
8
i++
를 연속 사용 할 경우 변수 i
는 1
증가 되지만, i++
자신은 증가되지 않으므로 ++
의 연속 사용보다 1
느릴 것입니다.
#include<stdio.h>
void main() {
int i;
i = 3;
printf("%d\n", i++); //변수 i는 3에서 4로 증가합니다. 하지만 변수 i++는 증가하지 않으므로 3입니다.
printf("%d\n", i++); //현재 변수 i는 4이고 5로 증가합니다. 하지만 변수 i++는 증가하지 않으므로 4입니다.
printf("%d\n", i++); //현재 변수 i는 5이고 6으로 증가합니다. 하지만 변수 i++는 증가하지 않으므로 5입니다.
printf("%d\n", i++); //현재 변수 i는 6이고 7로 증가합니다. 하지만 변수 i++는 증가하지 않으므로 6입니다.
printf("%d", i++); //현재 변수 i는 7이고 8로 증가합니다. 하지만 변수 i++는 증가하지 않으므로 7입니다.
}
결과
3
4
5
6
7
++i 및 i++ 교차 사용
++i
및 i++
의 교차 사용에도 원리는 같습니다. ++i
는 그 자신도 바로 증가되지만, i++
은 자기 자신은 증가되지 않습니다. 즉 i++
과 등호로 연계된 변수 또한 증가하지 않습니다.
#include<stdio.h>
void main() {
int i; //정수형 자료형(int) 조건으로 변수 i를 생성합니다.
int k; //정수형 자료형(int) 조건으로 변수 k를 생성합니다.
i = 3; //변수 i에 변수값 3을 대입합니다.
k = ++i; //변수 i는 3에서 4로 증가했습니다. ++i도 4입니다. 따라서 변수 k도 4입니다.
printf("%d\n", k); //정답 확인
k = i++; //위의 식에 의해서 현재 변수 i는 4입니다. i++에 의해서 변수 i는 5로 증가했습니다. 하지만 변수 i++은 증가하지 않으므로 여전히 4입니다. 따라서 변수 k도 4로 유지됩니다.
printf("%d", k); //정답 확인
}
결과
4
4
‐‐i
--i
는 i
변수를 1
감소시키고, --i
자기 자신도 바로 1
감소됩니다.
#include<stdio.h>
void main() {
int i;
i = 3;
printf("%d\n", --i); //변수 i는 1 감소했습니다. --i 자신도 1감소했으므로 --i는 2가 됩니다.
printf("%d", i); //변수 i를 출력합니다.
}
결과
2
2
i‐‐
i--
는 변수 i
를 1
감소시키지만, i--
자기 자신은 변하지 않습니다.
#include<stdio.h>
void main() {
int i;
i = 3;
printf("%d\n", i--); //변수 i는 1 감소했습니다. --i 자신은 변하지 않으므로 --i는 3으로 유지됩니다.
printf("%d", i); //변수 i를 출력합니다.
}
결과
3
2
부호가 기호 앞이나 뒤에 붙는 차이는 중요한 사항은 아닙니다. 증감 연산자는 반복문이나 다른 프로그래밍 언어에서도 지겹게 반복됩니다. +1 증가 또는 -1 감소라는 의미만 알았다면 빠르게 넘어갑니다.