"증감연산자"의 두 판 사이의 차이
(다른 사용자 한 명의 중간 판 7개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '증감연산자'란 [[피연산자]]를 1씩 증가시키거나 감소시킬 때 사용하는 연산자이며, 피연산자가 | + | '''증감연산자'''란 [[피연산자]]를 1씩 증가시키거나 감소시킬 때 사용하는 연산자이며, 피연산자가 1개인 [[단항연산자]]이다. 증가 연산자와 감소 연산자로 나뉜다.<ref name="위키백과">위키백과, 〈[https://ko.wikipedia.org/wiki/%EC%A6%9D%EA%B0%90_%EC%97%B0%EC%82%B0%EC%9E%90#cite_note-sigplan-1 증감 연산자]〉, 《위키백과》, 2020-01-17</ref> |
− | + | ||
+ | ==역사== | ||
+ | 이 개념은 1969년 경에 켄 톰프슨에 의해 B 프로그래밍 언어에 처음 도입되었다.<ref>Ritchie, Dennis M., 〈[http://www.bell-labs.com/usr/dmr/www/chist.html The Development of the C Language]〉, 《ACM SIGPLAN Notices》, 2003</ref> | ||
+ | |||
+ | ==연산자 위치== | ||
+ | 연산자가 피연산자의 앞이나 뒤에 올 수 있지만 어느 쪽에 위치하는가에 따라 연산의 순서와 결과가 다르다. <ref name="TCPSCHOOL">TCPSCHOOL, 〈[http://tcpschool.com/c/c_operator_incAndDec 증감 연산자]〉, 《TCPSCHOOL》 </ref> | ||
+ | |||
+ | ===전위 증감 연산자=== | ||
+ | 증감연산자를 변수 앞에 사용한 것을 전위연산자라고 하며 피연산자의 값을 증감시킨 후 연산을 수행한다. 전위 증감 연산자의 동작 원리는 증감연산자가 수행되어 변수의 값이 1 증감된 후 변수의 바뀐 값이 다른 변수에 할당된다.<ref name="코딩도장">코딩도장, 〈[https://dojang.io/mod/page/view.php?id=96 증감 연산자의 위치에 따른 차이점 알아보기]〉, 《코딩도장》</ref> | ||
+ | 전위 증감 연산자의 동작원리는 다음과 같다.<ref name="증감 연산자 원리">성장하는 호랑이, 〈[https://babytiger.tistory.com/entry/%EC%A0%84%EC%9C%84-%ED%9B%84%EC%9C%84-%EC%A6%9D%EA%B0%90-%EC%97%B0%EC%82%B0%EC%9E%90-i-i-%EC%B0%A8%EC%9D%B4 전위 후위 증감 연산자, ++i, i++ 차이]〉, 《개인 블로그》, 2012-06-07</ref> | ||
+ | 1. x=x+1; | ||
+ | 2. return x; | ||
+ | :{|class=wikitable width=700 style="background-color:#ffffee width:100%; margin:0 auto;" | ||
+ | !align=center style="background-color:#ffeecc"|증감 연산자 | ||
+ | !align=center style="background-color:#ffeecc"|설명 | ||
+ | |- | ||
+ | |align=center|++x | ||
+ | |align=center|피연산자 x의 값을 1 증가 시킨 후 연산 수행 | ||
+ | |- | ||
+ | |align=center|--x | ||
+ | |align=center|피연산자 x의 값을 1 감소 시킨 후 연산 수행 | ||
+ | |} | ||
+ | |||
+ | ===후위 증감 연산자=== | ||
+ | 증감연산자를 변수 뒤에 사용한 것을 후위연산자라고 하며 연산을 수행한 후에 피연산자의 값을 1 증감시킨다. 후위 증감 연산자의 동작 원리는 현재 변수의 값이 다른 변수에 할당된 후 증감연산자가 수행되어 변수의 값이 1 증감된다.<ref name="코딩도장"></ref> | ||
+ | 후위 증감 연산자의 동작원리는 다음과 같다.<ref name="증감 연산자 원리"></ref> | ||
+ | 1. const int temp = x; | ||
+ | 2. x=x+1; | ||
+ | 3. return temp; | ||
+ | :{|class=wikitable width=700 style="background-color:#ffffee width:100%; margin:0 auto;" | ||
+ | !align=center style="background-color:#ffeecc"|증감 연산자 | ||
+ | !align=center style="background-color:#ffeecc"|설명 | ||
+ | |- | ||
+ | |align=center|x++ | ||
+ | |align=center|연산 수행 후 피연산자 x의 값을 1 증가 | ||
+ | |- | ||
+ | |align=center|x-- | ||
+ | |align=center|연산 수행 후 피연산자 x의 값을 1 감소 | ||
+ | |} | ||
+ | |||
+ | ==활용== | ||
+ | ===for문 활용=== | ||
+ | 조건문 for문에서 증감연산자를 다음과 같이 사용한다. | ||
+ | for(i=0; i<10; ++i) //전위 증감 연산자 | ||
+ | for(i=0; i<10; i++) //후위 증감 연산자 | ||
+ | |||
+ | 전위 증감 연산자는 변수 값을 1 증감하여 반환하지만, 후위 증감 연산자는 다른 변수에 현재 변수를 저장 후 1 증감 시킨 다음 이전에 저장된 값을 반환한다. | ||
+ | 컴파일러의 최적화를 통해 실행속도에는 차이가 거의 없을 수 있지만 연산자 [[오버로딩]]으로 인해 후위 증감연산자는 성능이 더 떨어지게 되므로 전위 증감 연산자가 성능상 이득을 볼 수 있다.<ref name="증감 연산자 원리"></ref> | ||
+ | |||
+ | ===예제<ref name="TCPSCHOOL"></ref>=== | ||
+ | [[파일:증감연산자 예제.PNG|썸네일|300픽셀|예제 연산 순서]] | ||
+ | |||
+ | int x = 20; | ||
+ | int y = x-- + 5 + --x; | ||
+ | System.out.println("x의 값은 %d, y의 값은 %d\n",x,y); | ||
+ | |||
+ | >>>x의 값은 18, y의 값은 43 | ||
+ | |||
+ | # 후위 감소 연산자이므로 덧셈이 먼저 수행된다.(x=20 / y= 20 + 5 + --x) | ||
+ | # 후위 감소 연산자에 의해 x의 값이 감소된다.(x=19) | ||
+ | # 전위 감소 연산자에 의해 x의 값이 감소된다.(x=18) | ||
+ | # 덧셈 연산이 수행된다.(x=18 / y = 25 + 18) | ||
+ | # y에 결과값의 대입 연산이 수행된다.(y = 43) | ||
+ | |||
+ | {{각주}} | ||
+ | |||
+ | ==참고자료== | ||
+ | * 위키백과,〈[https://ko.wikipedia.org/wiki/%EC%A6%9D%EA%B0%90_%EC%97%B0%EC%82%B0%EC%9E%90#cite_note-sigplan-1 증감 연산자]〉, 《위키백과》, 2020-01-17 | ||
+ | * Ritchie, Dennis M., 〈[http://www.bell-labs.com/usr/dmr/www/chist.html The Development of the C Language]〉, 《ACM SIGPLAN Notices》, 2003 | ||
+ | * TCPSCHOOL,〈[http://tcpschool.com/c/c_operator_incAndDec 증감 연산자]〉, 《TCPSCHOOL》 | ||
+ | * 코딩도장,〈[https://dojang.io/mod/page/view.php?id=96 증감 연산자의 위치에 따른 차이점 알아보기]〉, 《코딩도장》 | ||
+ | * 성장하는 호랑이,〈[https://babytiger.tistory.com/entry/%EC%A0%84%EC%9C%84-%ED%9B%84%EC%9C%84-%EC%A6%9D%EA%B0%90-%EC%97%B0%EC%82%B0%EC%9E%90-i-i-%EC%B0%A8%EC%9D%B4 전위 후위 증감 연산자, ++i, i++ 차이]〉, 《개인 블로그》, 2012-06-07 | ||
+ | |||
+ | ==같이 보기== | ||
+ | * [[연산자]] | ||
+ | |||
+ | {{프로그래밍|검토 필요}} |
2020년 8월 10일 (월) 23:21 기준 최신판
증감연산자란 피연산자를 1씩 증가시키거나 감소시킬 때 사용하는 연산자이며, 피연산자가 1개인 단항연산자이다. 증가 연산자와 감소 연산자로 나뉜다.[1]
역사[편집]
이 개념은 1969년 경에 켄 톰프슨에 의해 B 프로그래밍 언어에 처음 도입되었다.[2]
연산자 위치[편집]
연산자가 피연산자의 앞이나 뒤에 올 수 있지만 어느 쪽에 위치하는가에 따라 연산의 순서와 결과가 다르다. [3]
전위 증감 연산자[편집]
증감연산자를 변수 앞에 사용한 것을 전위연산자라고 하며 피연산자의 값을 증감시킨 후 연산을 수행한다. 전위 증감 연산자의 동작 원리는 증감연산자가 수행되어 변수의 값이 1 증감된 후 변수의 바뀐 값이 다른 변수에 할당된다.[4] 전위 증감 연산자의 동작원리는 다음과 같다.[5]
1. x=x+1; 2. return x;
증감 연산자 설명 ++x 피연산자 x의 값을 1 증가 시킨 후 연산 수행 --x 피연산자 x의 값을 1 감소 시킨 후 연산 수행
후위 증감 연산자[편집]
증감연산자를 변수 뒤에 사용한 것을 후위연산자라고 하며 연산을 수행한 후에 피연산자의 값을 1 증감시킨다. 후위 증감 연산자의 동작 원리는 현재 변수의 값이 다른 변수에 할당된 후 증감연산자가 수행되어 변수의 값이 1 증감된다.[4] 후위 증감 연산자의 동작원리는 다음과 같다.[5]
1. const int temp = x; 2. x=x+1; 3. return temp;
증감 연산자 설명 x++ 연산 수행 후 피연산자 x의 값을 1 증가 x-- 연산 수행 후 피연산자 x의 값을 1 감소
활용[편집]
for문 활용[편집]
조건문 for문에서 증감연산자를 다음과 같이 사용한다.
for(i=0; i<10; ++i) //전위 증감 연산자 for(i=0; i<10; i++) //후위 증감 연산자
전위 증감 연산자는 변수 값을 1 증감하여 반환하지만, 후위 증감 연산자는 다른 변수에 현재 변수를 저장 후 1 증감 시킨 다음 이전에 저장된 값을 반환한다. 컴파일러의 최적화를 통해 실행속도에는 차이가 거의 없을 수 있지만 연산자 오버로딩으로 인해 후위 증감연산자는 성능이 더 떨어지게 되므로 전위 증감 연산자가 성능상 이득을 볼 수 있다.[5]
예제[3][편집]
int x = 20; int y = x-- + 5 + --x; System.out.println("x의 값은 %d, y의 값은 %d\n",x,y); >>>x의 값은 18, y의 값은 43
- 후위 감소 연산자이므로 덧셈이 먼저 수행된다.(x=20 / y= 20 + 5 + --x)
- 후위 감소 연산자에 의해 x의 값이 감소된다.(x=19)
- 전위 감소 연산자에 의해 x의 값이 감소된다.(x=18)
- 덧셈 연산이 수행된다.(x=18 / y = 25 + 18)
- y에 결과값의 대입 연산이 수행된다.(y = 43)
각주[편집]
- ↑ 위키백과, 〈증감 연산자〉, 《위키백과》, 2020-01-17
- ↑ Ritchie, Dennis M., 〈The Development of the C Language〉, 《ACM SIGPLAN Notices》, 2003
- ↑ 3.0 3.1 TCPSCHOOL, 〈증감 연산자〉, 《TCPSCHOOL》
- ↑ 4.0 4.1 코딩도장, 〈증감 연산자의 위치에 따른 차이점 알아보기〉, 《코딩도장》
- ↑ 5.0 5.1 5.2 성장하는 호랑이, 〈전위 후위 증감 연산자, ++i, i++ 차이〉, 《개인 블로그》, 2012-06-07
참고자료[편집]
- 위키백과,〈증감 연산자〉, 《위키백과》, 2020-01-17
- Ritchie, Dennis M., 〈The Development of the C Language〉, 《ACM SIGPLAN Notices》, 2003
- TCPSCHOOL,〈증감 연산자〉, 《TCPSCHOOL》
- 코딩도장,〈증감 연산자의 위치에 따른 차이점 알아보기〉, 《코딩도장》
- 성장하는 호랑이,〈전위 후위 증감 연산자, ++i, i++ 차이〉, 《개인 블로그》, 2012-06-07
같이 보기[편집]