C언어를 공부하다 보면, 처음에 직면하게 되는 문제가 증감연산자(전위, 후위)이다.
그럴수록 많은 사례를 보는것 보다 하나의 원리를 파고들어 이해하는게 훨씬 효과적이다.
우선 큰 원리는 아래와 같다.
(1)
b = a++
b = a;
a = a + 1;
(해설)
:a를 b에다 먼저 넣고
나중에 a를 1증가 시켜야 한다.
(2)
b = ++a;
a = a + 1;
b = a;
(해설)
:a를 먼저 증가 시키고
그 증가시킨 a를 b에다 넣는다
코드로 살펴보자
(1)
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdio.h>
int main() {
int a = 1;
int b = 2;
b = a++;
// a = 2, b = 1
printf("%d %d\n", a, b);
}
|
cs |
초기값 a = 1 , b = 2이다.
근데 a가 증감이 뒤에 붙었다.
그러면? 아 나중에 a에다가 1을 올리고 일단, 초기 값을
b에다 넣어야 겠구나.
(초기)
a = 1
b = 2
↓(대입)
b = 1
a = 2
(2)
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdio.h>
int main() {
int a = 1;
int b = 2;
b = ++a;
// a = 2, b = 2
printf("%d %d\n", a, b);
}
|
cs |
(초기)
a = 1
b = 2,
↓아 a를 먼저 연산 해줘야 겠구나
a = 2
↓ 그리고 그 값을 b에다 담으니
b = 2
결국 a = 2 , b = 2가 나오겠구나.
-끝-
'* Language > C' 카테고리의 다른 글
[C언어] 포인터 개념 아직도 햇갈리시나요? 코드로 봐야 100% 이해 할 수 있습니다. (0) | 2021.09.04 |
---|---|
[C언어] 사용자 입력 여러개 받기(반복문) (0) | 2021.08.30 |
[C언어] 확실히 알고가자 프로토타입(Prototype)이란?(개념잡기) (0) | 2021.01.06 |
[C언어] C언어를 배워야하는 이유(주관적인생각) (0) | 2020.10.17 |
댓글