[Java] 2.2.7 증감 연산자

2.2.7 증감 연산자

증감 연산자(++, –)는 단항 연산자로 자신의 값을 1을 증가하거나 감소하는 연산입니다.

증감 연산자도 대입 연산처럼 설정하는 연산이므로 피연산자로 상수는 올 수 없습니다. 따라서 (i+3)++; 과 같은 표현은 문법적 오류가 있는 표현입니다.

증감 연산자는 피연산자 앞에도 올 수 있고 뒤에도 올 수 있습니다. 연산 기호가 피연산자 앞에 오든 뒤에 오든 자기 자신의 값을 1 증가 혹은 감소하는 것은 마찬가지입니다. 하지만 연산 결과에서는 차이를 갖습니다.

만약 연산 기호가 피연산자 앞에 오면 연산 결과는 연산을 수행하고 난 후의 자기 자신입니다. 예를 들어 i 변수의 값이 3일 때 re = ++i;을 수행하면 i는 1 증가한 4이며 연산 결과도 4이므로 re 값도 4입니다.

하지만 연산 기호가 피연산자 뒤에 오면 연산 결과는 연산을 수행하기 전의 값입니다. 예를 들어 i 변수의 값이 3일 때 re = i++;을 수행하면 i는 1 증가한 4이며 연산 결과는 수행 전의 값이 3입니다. 따라서 re의 값은 3으로 설정합니다.

private static void exIncDecrement() {
    int i = 0;
    int re = 0;
    //(i+3)++; (i+3)의 연산 결과는 상수이므로 증감연산자의 피연산로 올 수 없음
    i=3;
    re = ++i;
    System.out.println("re:"+re + ", i:"+i);
    i = 3;
    re = i++;
    System.out.println("re:"+re + ", i:"+i); 
}
re:4, i:4
re:3, i:4