Java

[ Java 단항연산자(증감연산자) ] 변수++, ++변수 차이점

JAEBBA 2021. 3. 3. 00:12

연산자의 종류는 크게 3가지로 나뉠수 있습니다.

  • 단항 연산자 : ++x;
  • 이항 연산자 : x+y;
  • 삼항 연산자 : (sum > 90) ? "A" : "B";

이항 연산자와 삼항 연산자는 누구나 쉽게 이해 하고 계실겁니다.

물론 단항 연산자도 쉽게 이해하시는 분도 계시겠지요

저는 단항연산자중 증감연산자에서 ++x 와 x++의 차이점을 쉽게 이해 할 수 없었습니다. 사실 쉽게 이해 하고 있는줄 알았습니다. 책을 읽고 단번에 이해가 되는듯 하였으나, 예제를 보니 그렇지 않았습니다...

아래 정의를 읽어보시고 예제를 한번 보겠습니다.


증감 연산자(++, --)

변수의 값을 1증가(++), 1감소(--)시키는 연산자. boolean타입을 제외한 모든 기본 타입의 피연산자를 사용 할 수 있다.

연산식에서 증감 연산자만 있는 경우 증감 연산자가 변수 앞 또는 뒤 어디든 위치해도 상관없다.

하지만, 다른 연산자와 함께 사용하는 연산시에서는 연사자의 위치에 따라 연산결과가 다르게 나온다.

증감 연산자가 변수 앞에 있으면 우선 변수를 1증감 후 다른 연산자와 계산.

증감 연산자가 변수 뒤에 있으면 다른연산자를 먼저 처리한 후 변수를 1증감 한다.

Ex)

int x = 1;

int y = 1;

int result1 = ++x + 10; //12

int result2 = y++ + 10; //11

x의 값이 1증가되어 2가 된 후 10을 더하여 12가 되고,

y의 값은 1과 10을 더한 후 그 후에 y에 1이 증가되어 결과값은 11이 된다.

위에 내용을 보면 쉽게 이해 되는듯 하나 아래 예제를 보고 갸우뚱 해졌습니다.

public static void main(String[] args) {
        int x = 10;
        int y = 10;
        int z;

        System.out.println("------------------------------");
        x++;    //11
        ++x;    //12
        System.out.println("x = "+x);   //12

        System.out.println("------------------------------");
        y--;    //9
        --y;    //8
        System.out.println("y = "+y);   //8

        System.out.println("------------------------------");
        z = x++;    
        System.out.println("z = "+z);   //12
        System.out.println("x = "+x);   //13

        System.out.println("------------------------------");
        z = ++x;    
        System.out.println("z = "+z);   //14
        System.out.println("x = "+x);   //14

        System.out.println("------------------------------");
        z = ++x + y++;  //15 + 8
        System.out.println("z = "+z);   //23
        System.out.println("x = "+x);   //15
        System.out.println("y = "+y);   //9
}

Line 7 ~ Line 13은 너무 쉽게 이해가 됐습니다.

그러나.... Line 18 ~ Line 19 를 보고 순간 멍~ 한참을 반복해서 보니 이해가 됐습니다...

Line 17 z = x++; 에서 x는 Line 8에서 적용된 12입니다.
이때 증감연산자(++)가 변수(x) 뒤에 있기때문에 다른 연산자를 먼저 계산해야 하기 때문에 z = x 연산을 먼저 해줍니다.
이후 x++ 증감연산을 하기 때문에 결과적으로 z = 12 이고 x = 13이 되겠습니다.

그 이후 아래로 소스를 읽다보면 자연스럽게 정답을 맞출수 있게 됩니다.

기초적이면서도 헷갈릴수 있는 단항 연산자에 대해 알아보았습니다.

저와 같은 개린이 분들에게 도움이 되었으면 좋겠습니다....ㅎㅎ

'Java' 카테고리의 다른 글

JAVA 설치 과정  (0) 2021.02.23