더북(TheBook)

함수를 호출할 때 조건식을 사용하면 특정 조건에 따라 다른 인자를 손쉽게 호출할 수 있다.

f(a, (x < 0 ? b : c), (y < 0 ? d : e));

if 문을 사용해서 이 작업을 수행하려면 꽤 복잡해진다. 믿지 못하겠다면 직접 시도해 보라.

사실 if 문을 사용할 것인가 조건식을 사용할 것인가는 중요하지 않다. 따라서 여러분이 가장 편리하다고 느끼는 형태로 사용하길 바란다.

일화: if?: 중에 어떤 것을 선택하느냐의 차이를 발견할 수 있는 예제로 표준 템플릿 라이브러리(Standard Template Library, STL)(4.1절 참조)의 replace_copy 연산이 있다. replace_copy 연산은 조건부 연산자로 구현했지만 더 일반적으로 사용되었던 방법은 if였다. 이 "버그"는 약 10년 동안 발견되지 않은 채 남아있었으며 Jeremy Siek의 박사 학위 논문[38]의 자동 분석을 통해서만 검출되었다.

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