2011년 4월 24일 일요일

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

오늘은 자바의 증감연산자(++,--)에 대해서 알아보겠다. ++는 변수의 값을 1씩 증가시키고 --는 변수의 값을 1씩 감소시킨다. 그럼 아래 예제를 보자.
증감연산자를 이용해서 값들을 출력하는 예제이다. 특별히 어려운게 없으니 다 이해했으리라 본다. 굳이 설명하자면 a랑 c가 같고 b랑 d가 같다. 값이 같은게 아니고 a랑 b의 연산방식을 풀어서 쓴것이 c랑 d이다. 출력부분에서 +는 변수 때문에 쓴것이지 더하라고 쓴것이 아님을 다들 기억하고 있으리라 믿는다. 믿어도 되겠지? ^^

그럼 이번에는 많은 이들이 헤깔려하는 예제를 보여줄까 한다. 실행하기 전에 결과값을 예상해보고 자신의 생각과 맞는지 점검해 보기 바란다.
증감연산자를 뒤에다 놓고 쓸수도 있지만 앞에다 놓고 쓸수도 있다. 계산값은 둘다 똑같으나 위의 예제에서처럼 그 값을 다른 변수에 넘겨줄때는 약간의 차이가 있다. 무엇이 다를까? 한마디로 시간차 패스(?)라고나 할까나? ^^ 그럼 결과값을 보면서 설명하겠다.

a=2
b=2
c=1
d=2

a랑 b는 어차피 1씩 더한거니까 2가 나올줄 다 예상했을꺼다. 설마 1이라고 답변한 사람은 없겠지? 진심으로 없길 바란다. ^^ 1+1=? 뭘까?  2 잖어...뭘 그렇게 오래 생각하셤? ㅎㅎ 자 우리가 알아야될 부분이 c와 d인데 c가 1이다. 증감연산자를 변수뒤에 써놓으면 계산하기전의 값을 넘겨주고 1을 증가시키고 반대로 증감연산자를 변수앞에 써놓으면 계산하고난후 즉 1을 더하고난 후의 값을 넘겨준다. 왜 이런걸 만들어났지? 싶을거다. 때에 따라서 유용하게 쓰일때가 있다. 은근히 헤깔리므로 지나치기가 쉬운데 외우기 쉬운 방법을 특별 공개(?)한다.

1. 증감연산자에 있을시 반대로 계산하고난 의 값을 해당 변수에 넘겨준다. (변수가 뒤에 있을시 후처리) ++b
2. 증감연산자에 있을시 반대로 계산하기 의 값을 해당 변수에 넘겨준다. (변수가 앞에 있을시 선처리) a++

앞뒤 전후 거꾸로 생각하면 외우기 쉽다. 1번(예제에서는 b의 경우)을 유식한 말(?)로 하면 "선 연산, 후 처리"라고 하고 2번(예제에서는 a의 경우)을 유식한 말(?)로 하면 "선 처리, 후 연산"이라고 한다. 노파심에 한마디 더하자면 "처리"하는 부분이 해당값을 변수에 넘겨주는 부분이다. 자꾸 같은 얘기하니 오히려 더 헤깔릴지도 모르겠다.ㅎㅎ

a--;
--a;
a-=1;
a=a-1;
네가지 다 a값을 1씩 감소시키라는 뜻

a++;
++a;
a+=1;
a=a+1;
네가지 다 a값을 1씩 증가시키라는 뜻

증감연산자, 특히 1씩 더하는 증감연산자(++)는 자바에서 약방에 감초처럼 엄청 많이 쓰인다. 따라서 네가지 방식 모두 무조건 암기하라. 네가지 중 마지막것이 의미가 확실해서 모든 프로그래머들이 그렇게 쓰면 좋겠으나 대부분 처음것을 사용한다. 워낙 많이 쓰이니 매번마다 쓰기 귀찮아서 이런게 개발(?)되었다. 자바의 발전은 계속될 것이다.ㅎㅎ 다음 시간까지 확실히 하라고 더 이상 진도 나가지 않겠으니 열심히 외우자. ^^

댓글 2개: