더북(TheBook)

즉, 증가 및 감소 연산은 수정 가능하고 주소를 지정할 수 있는 무언가가 필요하다. 주소를 지정할 수 있는 항목을 기술 용어로 Lvalue라고 한다(부록 C의 정의 C-1 참조). 위의 코드 조각에서 오직 i만 Lvalue다. i와 대조적으로, j는 상수이며 3 + 5는 주소 지정이 불가능하다.

접두사 표기법과 접미사 표기법 모두 변수에 1을 더하거나 빼는 역할을 한다. 증가 표현식과 감소 표현식은 연산자가 접두사에 있을 때와 접미사에 있을 때 서로 다른 값을 갖는다. 연산자가 접두사에 있는 경우 수정된 값을 반환하고, 접미사에 있는 경우 기존 값을 반환한다. 예를 들어

int i = 3, j = 3;
int k = ++i + 4; // i는 4, k는 8
int l = j++ + 4; // j는 4, l는 7

마지막에 ij의 값은 모두 4다. k의 값을 구할 때는 이미 증가된 i 값을 사용하는 반면, l의 값을 구할 때는 기존의 j 값을 사용한다.

일반적으로 수식에서 증가나 감소의 사용을 자제하고 j+1 등으로 대체하거나 증가/감소를 분리해서 수행하는 게 좋다. 수식이 사이드 이펙트(Side Effect)를 갖지 않아야 읽는 사람들이 이해하기 쉽고 컴파일러가 최적화하기도 쉽다. 그 이유는 곧 알게 될 것이다(1.3.12절 참조).

단항 뺄셈은 숫자의 값을 양수면 음수로, 음수면 양수로 바꾼다.

int i = 3;
int j = -i;    // j는 -3
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.