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

C 언어의 연산자 우선순위와 결합 법칙, 표현식 평가 방식 완벽 이해

C 언어에서 표현식은 어떻게 평가될까?

C 언어에서 표현식(expression)은 컴파일러에 의해 연산자 우선순위(precedence)결합 법칙(associativity)이라는 두 가지 핵심 규칙에 따라 평가됩니다. 복잡한 수식이 의도한 대로 계산되도록 하려면 이 두 규칙을 정확히 이해하는 것이 필수적입니다.

C 언어의 연산자 우선순위와 결합 법칙, 표현식 평가 방식 완벽 이해

1. 연산자 우선순위(Precedence)

하나의 표현식 안에 서로 다른 우선순위를 가진 연산자들이 함께 사용되면, 우선순위 규칙이 먼저 적용됩니다. 우선순위가 높은 연산자일수록 표현식에서 먼저 계산됩니다.

예를 들어 다음과 같은 코드가 있다고 가정해 보겠습니다.

result = 20 - 10 * 2;

이 경우 10 * 2가 가장 먼저 계산됩니다. 곱셈 연산자 *가 뺄셈 연산자 -와 대입 연산자 =보다 우선순위가 높기 때문입니다. 따라서 결과는 20 - 20 = 0이 됩니다.

2. 결합 법칙(Associativity)

표현식에 동일한 우선순위를 가진 연산자가 여러 개 포함되어 있다면, 이번에는 결합 법칙이 적용됩니다. 결합 법칙은 연산을 수행하는 방향을 결정하며, 크게 두 가지로 나뉩니다.

  • 왼쪽에서 오른쪽(left to right): 산술 연산자(+ - * / %) 등 대부분의 이항 연산자가 여기에 해당합니다.
  • 오른쪽에서 왼쪽(right to left): 대입 연산자(= += -= 등)와 단항 연산자(++ -- ! 등)가 여기에 해당합니다.

C 언어의 연산자 우선순위와 결합 법칙, 표현식 평가 방식 완벽 이해

C 언어의 연산자 우선순위와 결합 법칙, 표현식 평가 방식 완벽 이해

C 언어의 연산자 우선순위와 결합 법칙, 표현식 평가 방식 완벽 이해

결합 법칙 예시

예를 들어 a - b - c처럼 같은 우선순위의 뺄셈 연산자가 연달아 나오면, 왼쪽에서 오른쪽으로 결합되어 (a - b) - c 순서로 계산됩니다.

반면 대입 연산자는 오른쪽에서 왼쪽으로 결합되므로, a = b = c = 10;이라는 문장은 c = 10b = ca = b 순서로 처리되어 세 변수 모두 10을 갖게 됩니다.

정리

C 컴파일러는 표현식을 평가할 때 먼저 우선순위를 기준으로 연산 순서를 정하고, 우선순위가 같은 연산자들 사이에서는 결합 법칙에 따라 계산 방향을 결정합니다. 헷갈리기 쉬운 복잡한 수식에는 괄호 ()를 명시적으로 사용하면 코드의 가독성과 안정성을 동시에 높일 수 있습니다.