더북(TheBook)

1.4.1 표현식

표현식을 처음부터 재귀적으로 구축해 보자. 모든 변수의 이름 (x, y, z, …), 상수, 리터럴은 표현식이다. 연산자로 결합한 하나 이상의 표현식들은 표현식을 구성한다. 예를 들어 x + yx * y + z 등이 있다. 파스칼과 같은 다른 몇몇 언어에서 할당문은 문장이다. 하지만 C++에서는 표현식이다. 예를 들어 x = y + z가 있다. 결과적으로 표현식을 다른 할당문 안에 사용할 수 있다. 예를 들어 x2 = x = y + z가 있다. 할당문은 오른쪽에서 왼쪽 순서로 수행한다. 다음과 같이 입력 및 출력 작업도 표현식이다.

std::cout << "x is " << x << "\n"

표현식을 인자로 넣은 함수 호출도 표현식이다. 예를 들어 abs(x)abs(x * y + z)가 있다. 따라서 함수 호출도 pow(abs(x), y)처럼 중첩할 수 있다. 만약 함수 호출이 문장이라면 중첩이 불가능하다는 점을 유의하라.

할당이 표현식이므로 abs(x = y)처럼 함수의 인자로 사용할 수 있다. 또는 다음과 같이 I/O 작업에 사용할 수 있다.

print(std::cout << "x is " << x << "\n", "I am such a nerd!");

이러한 표현식은 말할 필요도 없이 가독성이 떨어지며 유용하기보다 복잡해서 혼란만 가중시킨다. 뿐만 아니라 괄호로 둘러싸인 표현식도 표현식이다. 예를 들어 (x + y)가 있다. 괄호로 그룹을 만들면 모든 연산자보다 우선순위가 높으므로 필요에 따라 수행 순서를 변경할 수 있다. 예를 들어 x * (y + z)는 덧셈을 먼저 계산한다.

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