본문 바로가기

Programming/[C, C++]

[C] 증감 연산자: 전위 방식, 후위 방식

반응형

증감 연산자

증감 연산자는 ++, -- 기호를 이용하는 연산자로 피연산자의 값을 1 증가 또는 1 감소시켜 준다.

 

증감 연산자 설명
++ a 선 증가, 후 연산(먼저 증가시키고 그 다음 연산)
a++ 선 연산, 후 증가(먼저 연산, 그 다음 증가)
--a 선 감소, 후 연산(먼저 감소, 그 다음 연산)
a-- 선 연산, 후 감소(먼저 연산, 그 다음 감소)

여기서 연산은 = 연산자를 이용한 연산을 의미

 

예제를 하나 보겠습니다.

#include <stdio.h>
int main(void){
    

    int num1=10;
    printf("%d \n",num1);

    num1++;
    printf("%d \n",num1); // a++ 선 연산, 후 증가(먼저 연산하고 그 다음 증가시킨다.)

    ++num1;
    printf("%d \n",num1); // ++a 선 증가, 후 연산(먼저 증가시키고 그 다음 연산한다.)

    --num1;
    printf("%d \n",num1); // --a 선 감소, 후 연산(먼저 감소시키고 그 다음 연산한다.)

    num1--;
    printf("%d \n",num1); // a-- 선 연산, 후 감소(먼저 연ㅅ나하고 그 다음 감소시킨다.)

    return 0;

}

결과

10 
11 
12 
11 
10

증감 연산자가 단독으로 쓰였을 때는 단순히 숫자 하나를 증가시키거나 감소시크는 역할을 한다.

 

 

전위 방식, 후위 방식

증감 연산자는 전위 방식과 후위 방식에 차이가 있다.

 

전위 방식 : 증감 연산자의 위치가 변수의 앞에 위치하는 표현 (++a, --a)

후위 방식 : 변수의 뒤에 위치하는 표현 (a++, a--)

 

두 방식의 차이는 무엇일까? 다음 예제를 보며 알아보자.

#include <stdio.h>
int main(void){
    
   int num1=10, num2=10;
   int a,b;

   a=++num1; // 전위방식, 선 증가 후 연산
   printf("%d, %d \n", a, num1); // 결과: 11, 11

   b=num2++; // 후위방식, 선 연산 후 증가
   printf("%d, %d \n", b, num2); // 결과: 10, 11

   return 0;
}

결과

11, 11 
10, 11

 

전위 방식의 경우 'num1 += 1' 을 수행하고 이후에 'a = num1'을 수행하고

후위 방식의 경우 'b = num2'를 수행하고(선 연산) 이후에 'num2 += 1'을 수행하라는 의미이다.

 

풀어서 설명하면 다음과 같다.

#include <stdio.h>
int main(void){

    int num1=10, num2=10;
    int a,b;
    
    // a=++num1 표현
    num1=num1+1;
    a=num1;
    printf("%d, %d \n",a, num1);

    // b=num2++ 표현
    b=num2;
    num2=num2+1;
    printf("%d, %d \n",b, num2);

    return 0;
}

 

요약

전위 방식: 선 증가, 후 연산

// a=++num1 표현
    num1=num1+1;
    a=num1;
    printf("%d, %d \n",a, num1);

후위 방식: 선 연산, 후 증가

// b=num2++ 표현
    b=num2;
    num2=num2+1;
    printf("%d, %d \n",b, num2);

 

 

이상으로 증감 연산자의 전위 방식, 후위 방식에 대해 알아봤습니다.

반응형