더북(TheBook)

4.2 오브젝트를 수정하는 연산자

앞에서 본 a = 42란 문장에 나온 대입(assignment) 연산도 중요한 연산이다. 예제를 보면 알겠지만 이 연산자는 대칭적이지 않다. 다시 말해 오른쪽은 값이고 왼쪽은 오브젝트다. 좀 거창하게 표현하면 C 언어에서 오른쪽 부분을 rvalue(우측값)C라 하고, 왼쪽 부분을 lvalue(좌측값)C라 한다. 하지만 이런 용어는 가능하면 쓰지 않을 것이다. 그냥 값과 오브젝트라고만 해도 충분하다.

C 언어는 다음과 같은 형태의 대입 연산자도 지원한다. 지금까지 본 바이너리 연산자 @에 대해 다음 문법을 적용할 수 있다.

오브젝트 @= 표현식;

이 문법을 적용하면 산술 연산자 @와 대입 연산을 하나로 합쳐서 간결하게 표현할 수 있다(표 4-2 참조). 이 표현을 풀어 쓰면 다음과 같다.

오브젝트 = (오브젝트 @ (표현식));

다시 말해 +=, -=, *=, /=, %=란 연산자가 추가로 제공되는 셈이다. 예를 들어 for 루프에서 += 연산자를 다음과 같이 활용할 수 있다.

for (size_t i = 0; i < 25; i += 7) {
  ...
}

이 연산자를 쓸 때 주의할 점이 있다. 두 연산자 사이에 공백을 넣으면 안 된다. 가령 i += 7i + = 7과 같이 쓰면 구문 오류가 발생한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.