삼항 연산자(Ternary Operator)란?
삼항 연산자는 이름 그대로 세 개의 피연산자를 가지는 유일한 연산자로, 조건의 참·거짓 여부에 따라 두 값 중 하나를 선택하여 반환합니다. 간단한 조건 분기를 if-else문 없이 한 줄로 처리할 수 있어 코드를 더 간결하게 만들어 줍니다.
삼항 연산자의 문법
(expression-1) ? expression-2 : expression-3
이 연산자는 표현식의 평가 결과에 따라 두 값 중 하나를 반환합니다. 동작 방식은 다음과 같습니다.
- expression-1: 조건을 판별하는 표현식으로, Boolean 타입으로 평가됩니다.
- expression-1이 true로 평가되면 → expression-2가 평가되고 그 값이 최종 결과로 반환됩니다.
- expression-1이 false로 평가되면 → expression-3이 평가되고 그 값이 최종 결과로 반환됩니다.
예제: 두 수 중 최댓값 구하기
삼항 연산자를 사용하여 두 정수 중 큰 값을 찾는 프로그램을 작성해 보겠습니다.
#include <iostream>
using namespace std;
int main() {
int a = 10;
int b = 20;
int max = a > b ? a : b;
cout << "Maximum value = " << max << "\n";
return 0;
}
삼항 연산자의 기본 문법과 위 예제 코드를 대응시켜 비교하면 다음과 같습니다.
- expression-1 →
(a > b) - expression-2 →
a - expression-3 →
b
먼저 조건식 a > b가 평가됩니다. 변수 a의 값(10)이 변수 b의 값(20)보다 작기 때문에 이 조건식은 Boolean false로 평가됩니다. 따라서 콜론(:) 뒤에 있는 expression-3인 변수 b의 값인 20이 반환되며, 이 값이 최종 결과가 되어 변수 max에 할당됩니다.
만약 a가 b보다 컸다면 조건식이 true로 평가되어 a의 값이 반환되었을 것입니다.
실행 결과
위 코드를 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.
Maximum value = 20
정리
삼항 연산자는 if-else문을 대체할 수 있는 간결한 조건 표현식입니다. 위 예제의 경우 if-else문으로 작성하면 여러 줄이 필요하지만, 삼항 연산자를 사용하면 int max = a > b ? a : b;처럼 한 줄로 처리할 수 있습니다. 단순한 값 선택 로직에서는 삼항 연산자를, 복잡한 분기 처리가 필요한 경우에는 if-else문을 사용하는 것이 가독성 측면에서 권장됩니다.