검수요청.png검수요청.png

"증감연산자"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
 
(다른 사용자 한 명의 중간 판 5개는 보이지 않습니다)
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>
+
'''증감연산자'''란 [[피연산자]]를 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>
 
이 개념은 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>TCPSCHOOL, 〈[http://tcpschool.com/c/c_operator_incAndDec 증감 연산자]〉, 《TCPSCHOOL》 </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;"
 
:{|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"|증감 연산자
19번째 줄: 20번째 줄:
 
|-
 
|-
 
|align=center|--x
 
|align=center|--x
|align=center|피연산자 x의 값을 1 감소 시킨 후 연산 수행
+
|align=center|피연산자 x의 값을 1 감소 시킨 후 연산 수행
 
|}
 
|}
 
 
전위 증감 연산자의 동작원리<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;
 
 
  
 
===후위 증감 연산자===
 
===후위 증감 연산자===
연산을 수행한 피연산자의 값을 증감시킨다.
+
증감연산자를 변수 뒤에 사용한 것을 후위연산자라고 하며 연산을 수행한 후에 피연산자의 값을 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;"
 
:{|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"|증감 연산자
41번째 줄: 40번째 줄:
 
|}
 
|}
  
 
+
==활용==
후위 증감 연산자의 동작원리<ref name="증감 연산자 원리"></ref>
 
1. const int temp = x;
 
2. x=x+1;
 
3. return temp;
 
 
 
 
 
==증감 연산자 활용==
 
 
===for문 활용===
 
===for문 활용===
조건문 for문에서 증감 연산자를 다음과 같이 사용한다.
+
조건문 for문에서 증감연산자를 다음과 같이 사용한다.
 
  for(i=0; i<10; ++i) //전위 증감 연산자
 
  for(i=0; i<10; ++i) //전위 증감 연산자
 
  for(i=0; i<10; i++) //후위 증감 연산자
 
  for(i=0; i<10; i++) //후위 증감 연산자
for문에서의 전위/후위 증감 연산자
+
 
 
전위 증감 연산자는 변수 값을 1 증감하여 반환하지만, 후위 증감 연산자는 다른 변수에 현재 변수를 저장 후 1 증감 시킨 다음 이전에 저장된 값을 반환한다.
 
전위 증감 연산자는 변수 값을 1 증감하여 반환하지만, 후위 증감 연산자는 다른 변수에 현재 변수를 저장 후 1 증감 시킨 다음 이전에 저장된 값을 반환한다.
컴파일러의 최적화를 통해 실행속도에는 차이가 거의 없을 수 있지만 연산자 [[오버로딩]]으로 인해 후위 증감 연산자는 성능이 더 떨어지게 되므로 전위 증감 연산자가 성능상 이득을 볼 수 있다.<ref name="증감 연산자 원리"></ref>
+
컴파일러의 최적화를 통해 실행속도에는 차이가 거의 없을 수 있지만 연산자 [[오버로딩]]으로 인해 후위 증감연산자는 성능이 더 떨어지게 되므로 전위 증감 연산자가 성능상 이득을 볼 수 있다.<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
+
* 위키백과,〈[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
+
* 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》
+
* TCPSCHOOL,〈[http://tcpschool.com/c/c_operator_incAndDec 증감 연산자]〉, 《TCPSCHOOL》
*성장하는 호랑이 , 〈[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
+
* 코딩도장,〈[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
  1. 후위 감소 연산자이므로 덧셈이 먼저 수행된다.(x=20 / y= 20 + 5 + --x)
  2. 후위 감소 연산자에 의해 x의 값이 감소된다.(x=19)
  3. 전위 감소 연산자에 의해 x의 값이 감소된다.(x=18)
  4. 덧셈 연산이 수행된다.(x=18 / y = 25 + 18)
  5. y에 결과값의 대입 연산이 수행된다.(y = 43)

각주[편집]

  1. 위키백과, 〈증감 연산자〉, 《위키백과》, 2020-01-17
  2. Ritchie, Dennis M., 〈The Development of the C Language〉, 《ACM SIGPLAN Notices》, 2003
  3. 3.0 3.1 TCPSCHOOL, 〈증감 연산자〉, 《TCPSCHOOL》
  4. 4.0 4.1 코딩도장, 〈증감 연산자의 위치에 따른 차이점 알아보기〉, 《코딩도장》
  5. 5.0 5.1 5.2 성장하는 호랑이, 〈전위 후위 증감 연산자, ++i, i++ 차이〉, 《개인 블로그》, 2012-06-07

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 증감연산자 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.