[C언어] 증가연산자 ++ 와 감소 연산자 -- , 증감연산자 사용방법

ET의 공부/C언어|2019. 12. 3. 21:20

안녕하세요. 이번 포스팅은. 증가 연산자 ++ 와 감소 연산자 -- 사용방법입니다.

 

 

증감 연산자인 증가 연산자 ++ 와 감소 연산자 --

 

증감 연산자( ++, --)는 피연산자의 값을 1만큼 증가시키거나 감소시키는 단순한 작업을 수행합니다. 이러한 증감 연산자는 위치에 따라 다르게 동작하게 됩니다. 첫 번째는 피연산자 앞에서 사용하는 전위 방법. 두 번째는 피연산자 뒤에 사용하는 후위 방법이 있습니다.

 

전위, 후의 모두 증가시키거나 감소시키는 역할을 하지만 증감이 일어나는 시점에 차이가 있습니다.

 

일단 증감 연산자의 동작 방법을 설명하겠습니다.

 

//증감연산자
#include <stdio.h>
 
int main (void)
{
    
    int Up = 0;
    int Down = 0;
    
    Up++;
    Down--;
    printf("Up: %d  , Down: %d\n",Up,Down);
    ++Up;
    --Down;
    printf("Up: %d  , Down: %d\n ",Up,Down);
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

위의 코드를 보시면 Up, Down이라는 0으로 초기화한 변수를 후위, 전위 방식으로 증가, 감소시켜보았습니다. 결괏값은

Up: 1  , Down: -1

Up: 2  , Down: -2

이라는 값으로 둘 다 더해지고 빼지는 결과가 나온 것을 볼 수 있습니다.

그러면 Up = Up+1.  Down = Down -1이라는 명령을 수행하는 것인데 왜 증감 연산자를 사용할까요?

바로 축약한 형태의 프로그램이 더 깔끔하고 이해하기 쉽게 만들 수 있기 때문입니다. 예를 들어 아래와 같은 0부터 9까지 출력하는 프로그램이 있습니다.

 

#include <stdio.h>
 
int main (void)
{
    
    int Cnt = 0;
    while(Cnt < 10){
        printf("%d\n",Cnt);
        Cnt = Cnt + 1;
        
    }
    
    return 0;
}

 

이 단순한 코드를 증감 연산자를 통하여 간략하게 만들어보겠습니다.

 

#include <stdio.h>
 
int main (void)
{
    
    int Cnt = -1;
    while(++Cnt < 10){
        printf("%d\n",Cnt);
    }
    
    return 0;
}

 

조건을 증가시키는 부분과 while 문 안의 비교를 합쳐 더 안락한 코드가 되었습니다. 그런데 Cnt 변수가 0에서 -1로 바뀐 이유는

Cnt를 출력하기 전에 먼저 증가가 되었기 때문에 -1을 해주었습니다.

 

다음으로는 증감 연산자의 전위 후위 방법에 따른 차이점에 대해 설명하겠습니다.

 

#include <stdio.h>
 
int main (void)
{
    
    int a = 0;
    int b = 0;
    
    int a_after, b_after;
    
    a_after = a++;
    b_after = ++b;
    
    printf("a_after: %d   b_after: %d \n", a_after , b_after);
    
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
 

 

각 a는 후위 , b는 전위로 증가가 이루어졌습니다. 

결과는 a_after: 0 b_after: 1. 와 같습니다. 

 

후위 방법(a++)은 a값이 사용된 후(a_after에 값을 대입) 증가가 이루어졌고

전위 방법(++b)은 b값이 증가된 후 사용되었습니다.

 

따라서 a_after는 증가되기 전의 값인 0 이 대입되었고 b_after는 0에서 증가된 1이 대입된 것입니다. 

댓글()