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

증감연산자

위키원
Asadal (토론 | 기여)님의 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 이 증감연산자 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.