C/C++ 조건 연산자란?
C와 C++에서 조건 연산자(Conditional Operator)는 흔히 삼항 연산자(Ternary Operator)라고도 불립니다. 이름 그대로 세 개의 피연산자를 사용하는 것이 특징입니다.
Exp1 ? Exp2 : Exp3;
여기서 Exp1, Exp2, Exp3은 각각 표현식(expression)이며, 콜론(:)의 위치와 용도에 주목할 필요가 있습니다.
조건 연산자의 동작 원리
? 연산식의 값은 다음과 같은 순서로 결정됩니다.
- 먼저 Exp1이 평가됩니다.
- Exp1이 참(true)이면 Exp2가 평가되고, 그 결과값이 전체 ? 연산식의 값이 됩니다.
- Exp1이 거짓(false)이면 Exp3가 평가되고, 그 결과값이 전체 연산식의 값이 됩니다.
if-else 문을 대체하는 삼항 연산자
? 연산자를 '삼항(ternary)' 연산자라고 부르는 이유는 세 개의 피연산자를 필요로 하기 때문이며, 다음 형태의 if-else 문을 간결하게 대체할 수 있습니다.
if(condition) {
var = X;
} else {
var = Y;
}예를 들어 아래와 같은 코드가 있다고 가정해 보겠습니다.
if(y < 10) {
var = 30;
} else {
var = 40;
}위 코드는 삼항 연산자를 활용하면 단 한 줄로 다음과 같이 바꿀 수 있습니다.
var = (y < 10) ? 30 : 40;
전체 예제 코드
#include <iostream>
using namespace std;
int main () {
// 지역 변수 선언
int x, y = 10;
x = (y < 10) ? 30 : 40;
cout << "value of x: " << x << endl;
return 0;
}실행 결과
value of x: 40
y의 값이 10이므로 조건 (y < 10)은 거짓이 되고, 따라서 Exp3에 해당하는 40이 변수 x에 할당됩니다. 이처럼 삼항 연산자를 활용하면 간단한 조건 분기를 한 줄로 처리하여 코드를 더욱 깔끔하고 가독성 있게 만들 수 있습니다.