조건 연산자

a > b ? a : b

프로그래밍 언어에서 조건 연산자는 조건에 따라 다른 값을 내놓는 연산자이다. if else 문을 사용하지 않고도 한 줄로 표현할 수 있어 매우 편리한 연산자이다. C에서 파생된 많은 언어들(C++, C#, 자바, PHP)에서 지원하고 있는데 각 언어별로 표현 방식이 다르고 장단점이 있다. C에서 파생됐으며 C와 비슷한 언어들은 형태가 거의 비슷하다. 파이썬 같은 언어들은 연산자와 피연산자의 위치가 다르기도 하고 LUA같은 일부 언어들은 조건 연산자가 존재하지 않아 x and y or z의 형태로 써야한다.

항이 3개이기 때문에 삼항 연산자라고도 한다.

쉘 스크립트의 조건 연산자는 좀 복잡한 편이다. LUA처럼 조건 연산자가 따로 존재하지 않고 and를 나타내는 &&와 or를 나타내는 ||를 이용해 조건 연산자를 구현한다. 각종 기호들이 복잡하게 얽혀있다.

result=$("$a" = "$b" && echo "value_if_true" || echo "value_if_false")

a > b ? a : b라는 표현을 처음 봤다면 기호들의 위치, 종류 등을 혼동할 수 있다. 하지만 기호들이 의미하는 것을 알면 헷갈리지 않는다. a > b 뒤에 있는 ?는 조건이 만족하는지 안하는지 질문를 한다고 해석하면 되고, ? 앞의 조건이 만족한다면 뒤에꺼 조건이 만족하지 않는다면 ':' 뒤에 있는 문장을 수행한다.

장점[편집 | 원본 편집]

if (condition)
    return x;
else
    return y;

이 코드가 있다고 해보면

위의 네 줄을 아래처럼 단 한 줄로 적을 수 있다.

return (condition) ? x : y;

단점[편집 | 원본 편집]

조건 연산자를 여러 번 중첩시키면 가독성이 망한다.

영어 위키백과의 ?: 문서에는 언어 별로 다른 조건 연산자들의 목록을 볼 수 있다.