티스토리 뷰

[java,자바] 전위 후위 증감연산자 차이 (++x, x++)






코딩을하다보면 은근 혼란을 주는것이 전위,후위 증감연산자이다.


특히 처음 코딩을 하다보면 ++x 였나? x++ 였나? 엄청난 혼란을 준다.


그래서 경험상 처음에는 for 문에 습관적으로 넣었던 후위 증감연산자인 x++을 주게 된다....


하지만 코딩을 다한후 원하는 값이 안나오면 어디서 틀렸지? 하며 혼란에 빠지고...


몃시간씩 디버깅을 하다보면.... 증감연산자의 위치때문에 그랬다는 결론이나오며... 정말 허탈해진다...흠냐


이를 방지하기위해서 개발자 팁에 전위, 후위 비교 예제를 올리고 설명을 드리겠습니다.


우선 예제로 바로 들어가겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
/*
 * @author 국브
 */
public class hello {
 
    public static void main(String[] args) {
    int x = 2;
    int y = 2;
    
    System.out.println("전위 증감연산자:" + x * y++);
    System.out.println("후위 증감연산자:" + x * ++y);
    }
}



정말 별것도 아는 예제입니다.


왠지 초등학생들도 맞출것 같은 예제입니다.


위 코드를 실행하면 값으 뭐가 나올까요?


첫번째 출력은 4? 6?


그럼 두번째 출력물은 4? 6???


바로 답확인 해보겠습니다.



짠!!! 첫번째는 4 두번째는 8 이 나왔습니다.


다들 맞추셧나요?


 아마 전위 후위가 익숙 하지 않은 사람들은 분명히 첫번째는 4 나 6 을 생각하셧을것이고..


두번째는 6 을 생각하셨을것같습니다........




그럼 설명 드리겠습니다.



우선 x , y 의 값은 공통적인 숫자 2 입니다.


"System.out.println("전위 증감연산자:" + x * y++);" <-- 첫번째 출력물의 연산을 보면...



x * y++ 입니다. 그럼 대입을 해보겠습니다.


2 * 2++ 입니다. 이건 후위 증감연산자 입니다.


즉 2 * 2 만하고 콘솔창에 출력이 되는것입니다. 그럼 ++ 은 어디갓냐구요? 출력하고 y의 값은 2 에서 3이 되는것입니다.


그럼 두번째 출력물입니다.


"System.out.println("후위 증감연산자:" + x * ++y);" <-- 두번째 출력물의 연산을 보면...


x * ++y 입니다. 그럼 이것도 대입을 해서 한번 보겠습니다.


2 * (1+3) 입니다. 이해 하셧나요?


우선 y 의 값은 아까도 말씀드렸다싶이 후위연산자로인해 2가 아닌 3으로 2+1이 되어있습니다.


그래서 y = 3 입니다.


그럼 3 앞에 1 + 는 뭐냐구요?


전위 증감연산자 입니다. 전위 증감연산자는 연산을 하기전에 먼저 값을 +1 해줍니다.


그래서 2 * 4 가 되어서 출력물에는 8이 출력되는 것이지요...




정말 어마어마 하게 간단한 예제이지만 전위 후위 증감연산자의 차이가 한눈에 보이지 않나요??


여튼 이렇게 해서 전위,후위 증감연산자의 차이에 대해서 알아 보았습니다.


이해가 안가시거나 의문점이 있으신분은 댓글 달아주세요!


언제나 환영합니다 ^^



댓글