먼저 새로운 연산자 ++, --를 소개하고, 다음에 포인터 산술에서 이 연산자의 효과적 사용에 대해서 설명한다.

증감 연산자는 변수에 1을 더하거나 빼는 연산에 대한 축약형이다. 증가(increment operator) 연산자 ++는 변수에 1을 더하고, 감소 연산자(decrement operator) --는 변수에 1을 뺀다. 예를 들면, 다음 문장은

    n++

다음 문장과 그 의미가 동일하다.

    n = n + 1;

마찬가지로, 다음 문장은

    n--;

다음 문장과 그 의미가 동일하다.

    n = n - 1;

변수에 1을 더하거나 빼는 연산은 프로그램에서 빈번하게 발생하므로, 이러한 연산을 효과적으로 작성할 수 있도록 C는 증감 연산자를 제공한다.

여러분은 이미 for 문의 헤더에서 루프제어변수를 증가시키는 부분에서 ++ 연산자를 사용하고 있다.

증감 연산자는 피연산자가 나타나는 위치에 따라서 그 형태가 전치(prefix)이거나 후치(postfix)일 수 있다.

다음은 증가 연산자의 전치 형태이다.

    n++

다음은 증가 연산자의 후치 형태이다.

    ++n

증가 연산자가 for 문의 증가 부분에서처럼 단독으로 사용될 때는 전치 형태와 후치 형태는 그 의미가 동일하다. 예를 들면, 다음 두 문장은 동일하다.

    n++;
    ++n;

위의 두 문장 모두 실행 후 n의 값은 1보다 증가된다.

다음 두 프로그램 코드 모두 배열 a를 선언하고, 초기화한다. for 문의 증가 부분에서 증가 연산자가 전치와 후치 형태로 사용되고 있으나, 그 의미는 동일하다. 따라서 두 프로그램 코드의 의미는 동일하다.

 

그러나 증가 연산자가 더 큰 식에 포함되어 있을 경우에, 그 형태에 따라서 의미가 달라진다.

 

n++

n이 먼저 평가되고, 다음에 n의 값을 증가시킨다. 식에서는 증가 연산자가 적용되기 전,
즉 n의 처음 값이 사용된다.
        

 

++n

n의 값을 먼저 증가시키고, 다음에 n을 평가한다. 식에서는 증가 연산자가 적용된 후,
즉 n의 증가된 값이 사용된다.        

감소 연산자 --도 더하는 것 대신 빼는 것을 제외하고는 ++와 동일하게 행동한다.

다음 두 프로그램을 생각해보자. 두 프로그램의 출력 결과가 동일한가?


두 프로그램의 출력 결과가 동일하지 않음을 알 수 있다. 즉, 프로그램 12-2-a에서, 배정문 오른쪽 식의 평가 결과는 n의 값이 증가되기 이전의 값 3이다. 따라서 m은 3의 값을 갖는다. 반면에, 프로그램 12-2-b에서, 배정문 오른쪽 식의 평가 결과는 n의 값이 증가된 후의 값 4이다. 따라서 m은 4의 값을 갖는다. 출력되는 n의 값은 두 프로그램 모두 증가된 4를 갖는다.

 

[프로그램 단위 입력 실행] 다음 실습창을 통해서 프로그램 12-2-a, 12-2-b의 실행과정을 알아본다. 

 (여러분은 실습창의 왼편에 위치한 '새프로그램 입력' 버튼을 클릭하여 새로운 프로그램을 입력하여 실행시켜 볼 수 있다. )

 

 

[문장 단위 입력 실행] 여러분은 다음 실습창에서 C 프로그램을 한 문장씩 입력하여 실행시켜  볼 수 있다.   새로운 프로그램을 한 문장씩 입력하고 오른쪽 창에서 그 실행 결과를 살펴 보시오.         

   ( 실습 도움말)

 

 

 

프로그램 작성할 때, 증감 연산자는 반드시 필요하지는 않다. 그러나 C 프로그래머들은 전통적으로 이 연산자를 빈번히 사용하고 있다. 따라서 여러분은 이미 작성된 C 프로그램을 이해하기 위해서 이 연산자의 사용을 이해하는 것이 필요하다.
다음 두 프로그램 코드는 동일한 의미를 갖는다. 코드 2의 for 문에 증가 부분이 없으나, 그 본체의 배열 선택 식에 포함된 증가 연산자 ++를 통해서 i의 값이 증가된다.

 

그러나 다음 두 코드는 그 의미가 다르다는 것을 유의하라. 코드 2에서 a의 첫번째 배열 원소 a[0]은 초기화되지 않을 것이다.
 



top으로... 다음페이지로.. 이전페이지로.. home으로..