증감 연산자

증감 연산자는 피연산자로부터 더하거나 빼는 등 단항 연산을 위한 연산자이다. 증가 연산자와 감소 연산자로 나누며, 이 연산자들은 명령형 프로그래밍 언어에 구현되어 공통적으로 있다. C와 같은 언어들은 각 연산자마다 의미를 달리하는 전치와 후치 연산 기능이 있다.

B (C 및 파생판 포함)에서 문법적으로 파생된 언어들의 경우 증가 연산자는 ++로, 감소 연산자는 --로 나타낸다.

 역사 
이 개념은 1969년 경에 켄 톰프슨에 의해 B 프로그래밍 언어에 처음 도입되었다.

 예 
다음의 C 코드 부분은 전치 및 후치 증가 및 감소 연산자 간의 차이를 나타낸다:
int  x;
int  y;

// 증가 연산자
x = 1;
y = ++x;    // 이 경우 x는 2이고, y도 2이다. (전치)
y = x++;    // 이 경우 x는 3이지만 y는 그대로 2이다. (후치)

// 감소 연산자
x = 3;
y = x--;    // 이 경우 x는 2이고 y는 3이다. (후치)
y = --x;    // 이 경우 x는 1이고 y도 1이다. (전치)

아래는 후치 증가 연산자를 배열에 함께 사용한 예이다:
// 배열 요소를 합한다
float sum_elements(float arr[], int n) {
    float  sum = 0.0;
    int    i =   0;

    while (i < n)
        sum += arr[i++];    // i의 후치 증가
    return sum;
}

상기와 비슷하게, 아래는 후치 증가 연산자를 포인터에 사용한 예이다:
// 하나의 배열에서 다른 배열로 복사
void copy_array(float *src, float *dst, int n) {
    while (n-- > 0)        // n부터 0까지 돌면서 카운트
        *dst++ = *src++;   // 요소 *(src)를 *(dst)로 복사하여
                           //  포인터 둘 다 증가
}

이 예는 C++, 자바, C#와 같은 기타 C와 비슷한 언어들에서도 동작한다.

 지원 언어 
아래의 목록은 완전하지 않을 수 있으며, ++/-- 증감 연산자를 지원하는 주요 프로그래밍 언어 중 일부를 나열한다.

 AWK
 배시
 C
 C++
 C#
 CFML

 D
 고
 자바
 자바스크립트
 오브젝티브-C
 GNU 옥타브

 펄
 PHP
 스위프트
 발라

 각주 

 같이 보기 
 증가된 할당(Augmented assignment): +=, -= 연산자

분류:연산자 (프로그래밍)
분류:단항 연산