Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 비교 연산자 연결(Chaining) 이해하기 – 연산자 우선순위와 결합 방향

C#에는 왼쪽에서 오른쪽(left-to-right), 또는 오른쪽에서 왼쪽(right-to-left)으로 결합되는 다양한 연산자가 존재합니다. 그중에서도 연산자 연결(chaining)은 우선순위가 같은 연산자들이 왼쪽에서 오른쪽으로 결합하는 특성에 기반해 동작합니다.

연산자 우선순위(Operator Precedence)란?

연산자 우선순위는 하나의 표현식 안에서 항(term)들이 어떻게 그룹화되는지를 결정하며, 표현식이 평가되는 순서에 직접적인 영향을 미칩니다. 예를 들어 곱셈 연산자(*)는 덧셈 연산자(+)보다 높은 우선순위를 가지기 때문에, 2 + 3 * 42 + (3 * 4)로 해석되어 결과값이 14가 됩니다.

우선순위가 가장 높은 연산자는 우선순위 표의 맨 위에, 가장 낮은 연산자는 맨 아래에 위치합니다. 따라서 표현식이 평가될 때는 우선순위가 높은 연산자부터 차례대로 처리됩니다.

동등 연산자의 결합 방향(Associativity)

==!= 같은 동등 연산자(equality operator)는 왼쪽에서 오른쪽으로 결합됩니다. 즉, 여러 개의 동등 연산자가 나란히 있을 때는 가장 왼쪽에 있는 연산이 먼저 수행됩니다.

비교 연산자 연결 예시

문자열이 null인지 여부를 판별하는 표현식은 다음과 같이 작성할 수 있습니다.

if (str == null == false)

동등 연산자가 왼쪽에서 오른쪽으로 결합되기 때문에, 위 코드는 자동으로 다음 식을 먼저 검사합니다.

str == null

즉, 컴파일러는 이 표현식을 (str == null) == false처럼 해석합니다. str이 null이라면 str == null은 true가 되고, 이어서 true == false는 false가 되어 전체 조건은 거짓이 됩니다. 반대로 str이 null이 아니라면 str == null은 false가 되고, false == false는 true가 되어 전체 조건이 참이 됩니다.

실무에서의 활용 팁

이처럼 연산자 연결은 결합 방향에 따라 의미가 달라질 수 있으므로, 코드의 가독성과 유지보수성을 높이려면 괄호를 명시적으로 사용하거나 if (str != null)처럼 단순한 형태로 작성하는 것이 좋습니다.