[c] 연산자 우선순위에 대한 오해

연산자 우선순위는 프로그래밍 언어에서 매우 중요한 주제입니다. 많은 사람들이 연산자 우선순위에 대한 오해로 인해 버그를 만들어내기도 합니다. 이번 글에서는 연산자 우선순위에 대한 정확한 이해를 바탕으로 어떠한 오해를 피해야 하는지 살펴보겠습니다.

연산자 우선순위란?

연산자 우선순위는 연산을 수행할 때, 연산자들이 어떤 순서로 계산되어야 하는지를 정의합니다. 예를 들어, 3 + 5 * 2에서는 * 연산자가 + 연산자보다 우선순위가 높기 때문에 먼저 계산됩니다. 따라서 이 식의 결과는 13이 됩니다.

오해

일부 프로그래머들은 연산자 우선순위에 대한 오해로 인해 잘못된 결과를 만들어낼 수 있습니다. 예를 들어, 다음과 같은 코드에서

int a = 5;
int b = 2;
int result = a * b + b;

일부 프로그래머는 * 연산자가 + 연산자보다 우선순위가 높기 때문에 a * b가 먼저 계산되고, b를 더한 후 결과가 12가 된다고 생각할 수 있습니다. 하지만 실제로는 *+ 연산자의 우선순위는 동일하며, 왼쪽에서 오른쪽 순서로 계산되기 때문에 결과는 12가 아니라 12가 됩니다.

올바른 해결책

연산자 우선순위에 대한 오해를 피하기 위해서는 명시적으로 괄호를 사용하여 연산 순서를 명확히 해야 합니다. 위의 예시에서 올바른 결과를 얻기 위해서는 다음과 같이 코드를 작성해야 합니다.

int result = (a * b) + b;

이렇게 함으로써 a * b가 먼저 계산되고, 그 결과에 b가 더해진 후에 최종 결과가 계산됩니다.

결론

연산자 우선순위에 대한 오해는 프로그래밍에서 흔히 발생하는 버그의 원인 중 하나입니다. 연산자를 사용할 때에는 반드시 연산자 우선순위를 이해하고, 명확하고 정확한 코드를 작성해야 합니다. 이를 통해 프로그램의 신뢰성과 안정성을 높일 수 있습니다.

참고 자료: MDN Web Docs - Operator Precedence

정리: C++ 연산자 우선순위 순서와 결합법칙