주인장의 프로그래밍 개발 공부방

[Chapter 2 연산자] 4. 단항 연산자(Operator)의 종류 (증감 연산자) 본문

프로그래밍 기본 지식/Chapter 2 연산자

[Chapter 2 연산자] 4. 단항 연산자(Operator)의 종류 (증감 연산자)

거신 2019. 5. 20. 21:38

지난 시간에 이어 계속해서 단항 연산자에 대해서 알아보고 있다.

이번 시간에는 단항 연산자 중에서도

꽤나 어렵게 느껴질 수 있는 연산자에 대해서 알아보려고 한다.

바로 증감 연산자(Increase Decrease Operator)라는 녀석이다.

 

목표 : 증감 연산자의 의미를 정확하게 이해하고 형태에 따라 값이 어떻게 변하는지 이해한다.

 

1. 증감 연산자 (Increase Decrease Operator)

 

이번 시간에 알아볼 녀석의 이름은 증감 연산자라고 부른다.

증감 연산자는 2개의 연산자를 묶어서 부르는 것이다.

바로 증가 연산자감소 연산자를 합쳐서

증감 연산자라고 부른다.

 

증감 연산자에는 이름처럼 2가지가 존재하고 있다.

바로

 

++--이다.

 

증감 연산자는 대표적인 단항 연산자이면서

앞으로 진~~~~~짜 많이 만날 녀석이니까 이번 시간에 꼭 제대로 이해하고

기억하고 있길 바란다.

 

2. 증가 연산자 (Increase Operator)

 

먼저 증가 연산자에 대해서 알아보자.

증가 연산자는 기호로는

++라고 표기하고

의미는 값을 1씩 증가시킨다는 뜻을 가지고 있다.

 

이렇게만 보면 사실 어려운게 크게는 없을 것이라고 생각할 것이다.

실제로 기호 자체를 본적이 없기 때문에 익숙하진 않겠지만

의미자체가 어려운 게 아니기 때문에 자체를 이해하는데는 큰 어려움이 없을 것이다.

 

하지만 이렇게 간단하게 끝난다면 정말 고맙겠지만

사람 일이라는게 그렇지가 못하다는게 정말 한탄스러울 뿐이다.

본격적인 내용이 바로 다음부터 나올 예정이다.

그 내용을 알아보기 전에 일단 감소 연산자도 잠깐 알아보도록 하자.

 

3. 감소 연산자 (Decrease Operator)

 

감소 연산자는 기호로는

--라고 표기하고

의미는 값을 1씩 감소시킨다는 뜻을 가지고 있다.

증가 연산자와 반대로 값을 감소시키는 역할을 하는데

이 녀석도 꽤나 유용하게 쓰이니 잘 알아두도록 하자.

 

그리고 본격적으로 증감 연산자에 대해서 알아보도록 하자.

 

4. 증감 연산자의 위치에 따른 값 변화

 

우리가 단순히 증감 연산자에 대해서 알아보는 것이라면 큰 문제는 하나도 없을 것이다.

의미도 굉장히 쉽기 때문에 이해하는데 어려움이 없겠지만

문제는 이 연산자들이 붙는 위치에 따라서 결과도 전혀 다르게 나온다는 것이다.

 

먼저 증감 연산자붙는 위치에 따라서

2가지로 분류할 수 있는데 바로

증감 연산자가 피연산자 앞에 붙는 전위형,

증감 연산자가 피연산자 뒤에 붙는 후위형

으로 나눌 수가 있겠다.

 

단순히 연산자의 위치가 다를 뿐인데 값이 다르다는게 이해가 잘 안될 수도 있지만

정말 놀랍게도 전혀 다른 값이 출력된다.

가장 쉽게 예시를 들어서 결과들을 확인해 보자.

 

예시1)

int i = 0;

int j = 0;

j = ++i;

 

예시2)

int i = 0;

int j = 0;

j = i++;

 

예시를 2개를 만들었는데 이 둘의 차이점은

세 번째 줄에 있는 ++ii++로 ++연산자의 위치가 i의 앞에 있느냐 뒤에 있느냐의 차이 뿐이다.

 

일단 결과부터 알려주자면

예시1)의 j에는 1이 출력되고 예시2)의 j에는 0이 출력된다.

도대체 어떻게 이렇게 되는건지 자세하게 알아보자.

 

1) 전위형

 

증감 연산자피연산자의 앞에 붙는 형태

++i 또는 --i와 같은 형태로 사용한다.

 

전위형일 경우에는 값이 일단 증감을 하게 되는데

어느 시점에서 증감을 하냐면 일단 ++, --라는 녀석이 등장할 때부터 값이 변하게 된다.

++i라는 코드를 만나는 순간부터 i의 값은 증가하게 된 것이다.

그렇기 때문에 예시1)의 j이 1로 출력이 되는 것이다.

이는 --도 똑같다.

 

2) 후위형

 

그렇다면 연산자가 뒤에 붙는 경우는 어떻게 될까?

i++ 또는 i--와 같은 형태로 사용한다.

 

후위형일 경우에는 값이 일단 증감하는게 아니라

;(세미콜론, 인스트럭션), 즉, 줄이 끝나야 그제서야 값이 증감한다.

우리는 여기에서 아주 제대로 이해해야하는 부분이 등장했다.

 

바로 ;(세미콜론)이라는 녀석이다.

우리가 코드를 작성하면서 끝낼 때 꼭 붙이는 기호가 있다.

바로 ;(세미콜론)이다.

;이라는 기호는 코드에서 줄이 끝났음을 표시하는 기호인데

컴퓨터는 ;까지 코드를 읽고 실행하는 기능을 가지고 있다.

이 부분을 기억하고 다음을 읽어보도록 하자.

 

다시 후위형으로 돌아오면

앞서 i++i--의 경우에는 ;이 지나고나서야 값이 증감한다고 했다.

그렇기 때문에 예시2)의 j는 0을 출력하는 것이다.

왜냐하면 j = i++;라는 코드를 지나고 나서야

i는 증가하기 때문이다.

 

이 부분은 꽤나 헷갈릴 수 있다.

하지만 굉장히 제대로 이해하고 있어야하는 부분이다.

이 연산자의 위치 때문에 출력되는 값이 천지차이로 바뀔 수 있기 때문이다.

따라서 전위형이냐 후위형이냐를 정확하게 파악하는 것이 중요하겠다.

 

5. 마무리

 

오늘 알아본 증감 연산자는 크게 2가지가 있는데

바로 증가 연산자(++)와 감소 연산자(--)가 그것이다.

증가 연산자(++)값을 1씩 증가시키는 것이고

감소 연산자(--)값을 1씩 감소시키는 것이다.

그리고 증감 연산자의 형태에는

연산자가 피연산자 앞에 붙는 전위형이 있고

연산자가 피연산자 뒤에 붙는 후위형이 있다.

전위형++i와 같은 형태인데 이 연산자는

코드를 읽으면 일단 값을 증감시키게 된다.

반대로 후위형i++와 같은 형태인데 이 연산자는

코드를 읽고 ;를 지나가야 그제서야 값이 증감시키는 것이다.

Comments