본문 바로가기

Programming/C/C++

12번째, 증가·감소 연산자

안녕하세요, dudas입니다.
요즘 아침엔 춥고, 낮엔 덥고, 밤엔 춥고.. 일교차가 큰 날씨가 계속되는 10월이네요.

이번에는 증가, 감소 연산자에 대해 알아보겠습니다.

증가, 감소연산자는 (++, --)로 쓸 수 있습니다.
C언어에서는 변수의 값에 1을 더하기 위해 증가 연산자(++)를, 쓰거나 1을 빼기 위해 감소 연산자 (--)를 사용할 수 있습니다.

아래사진은 증가, 감소연산자의 예를 들어본 것입니다.

먼저 i 라는 변수에 5란 값으로 초기화를 시켰습니다.
그 다음줄에 "i++"이 나왔는데요 "i++"은 주석에 나와있는 것과 같이 "i = i + 1" 과 같은 뜻입니다.
"i = i + 1" 이 너무 기니까 줄여서 "i++"로 쓰는거죠.
그래서 5의 값을 가지고 있는 i에다가 1을 더하면 6이 됩니다. 따라서 첫번째 printf문에선 6이 출력됩니다.

그 다음줄에는 "i--"가 나옵니다. 이건 "i = i - 1" 과 같은 뜻입니다.
그래서 위에서 i가 6이 되었으니 6에서 1을 빼면 5가 됩니다. 따라서 두번째 printf문에선 5가 출력됩니다.

막상 해보고 나면 별거 아닌거라는게 느껴지실겁니다.

전위, 후위 연산자.
증가, 감소 연산자에는 사용되는 위치에 따라 전위 연산자와 후위 연산자라는 것이 있습니다.

다음은 전위연산자의 예를 들어본것입니다.
int i = 5;
++i;   // i의 값을 1만큼 증가시키는 전위 연산자
--i;   // i의 값을 1만큼 감소시키는 전위 연산자

다음은 후위연산자의 예를 들어본것입니다.
int i = 5;
i++;    // i의 값을 1만큼 증가시키는 후위 연산자
i--;    // i의 값을 1만큼 감소시키는 후위 연산자

전위연산자와 후위연산자의 예를 보면 별다를게 없어보입니다만
아래에 있는 문장을 보면 전위연산자와 후위연산자가 계산하는 방법이 다릅니다.
수식 또는 함수에서 전위/후위 연산이 갖는 의미
다음 문장에서 j에 사용된 증가 연산자는 후위 연산자입니다. 후위연산자가 수식에서 사용될 때에는 그 문장이 실행되고 난 후에 1만큼 증가하거나 감소합니다.
int i, j = 5;    // 변수 i와 j를 선언하고 j의 초기값을 5로 지정합니다.
i = j++;       // 후위연산자이므로 먼저 i에 j값인 5가 대입된 후에 j에 1을 더합니다. 그래서 i는 5가 됩니다.
printf("i = %d, j = %d", i, j);    // i = 5, j = 6 이 출력됩니다.

전위연산자가 수식에서 사용될 때에는 먼저 1을 더하고 그 문장이 실행됩니다.
위의 문장을 전위연산자로 바꾸면..
int i, j = 5;
i = ++j;    // 전위연산자이므로 먼저 j에 1을 더하고 i에 대입합니다. 그래서 i는 6이 됩니다.
printf("i = %d, j = %d", i, j);    // i = 6, j = 6 이 출력됩니다.

다음과 같이 작성해서 전위연산자와 후위연산자의 차이점을 확실하게 알 수 있습니다.
int i = 5, j = 5;    // 변수 i와 j의 초기값을 5로 지정합니다.

/*  i는 전위연산자이므로 1을 먼저 더한 다음 출력되므로 6이 출력되고, j는 후위연산자가이므로 먼저 5를 출력하고 그 다음에 1이 더해져 6이 됩니다. */

printf("i = %d, j = %d", ++i, j++);    // i = 6, j = 5 가 출력됩니다.

만약 진짜로 j가 6이 되는지 확인하려면 위 문장에다 printf문 하나를 추가시켜서 실행시킵니다.

int i = 5, j = 5;
printf("i = %d, j = %d \n", ++i, j++);  // i의 값이 6이 된 후 출력, j의 값 5가 출력되고 1을 더해 6이 됨.
printf("i = %d, j = %d", i, j);
    // i = 6, j= 6 이 출력됩니다.

이 코드의 출력결과는
*출력결과*
i = 6, j = 5
i = 6, j = 6





증가, 감소 연산자는 여기서 마치도록 하겠습니다. 다음엔 삼항 조건 연산자, 쉼표 연산자에 대해 알아보겠습니다.
혹시 잘못된 점이나 부족한 점이 있으면 지적해주시기 바랍니다.

p.s. 일교차가 심해서 감기 걸리기 쉬우니 감기조심하세요. ^^

이 글은 안랩 V스쿨 카페(http://cafe.naver.com/vgeneration)와 블로그(http://dudas.tistory.com)에만 게시합니다.