C언어 증감 연산자 연속 및 교차 사용 예제

C언어 증감 연산자는 +1을 더하거나 +1을 감소시키는데 사용합니다. ++i 는 변수 i1 증가시키고, ++i 자기 자신도 바로 1 증가 됩니다. i++ 는 변수 i1 증가시키지만, 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)
i-- 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++

++ii1 증가시키고, ++i 자기 자신도 1 증가됩니다. i++i1 증가시키지만, 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++ 를 연속 사용 할 경우 변수 i1 증가 되지만, 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++ 교차 사용

++ii++ 의 교차 사용에도 원리는 같습니다. ++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

--ii 변수를 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--는 변수 i1 감소시키지만, 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 감소라는 의미만 알았다면 빠르게 넘어갑니다.