24.1 괄호 사용하기

먼저 35 + 1 * 2를 C 언어에서 계산해보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

no_bracket.c

#include <stdio.h>
 
int main()
{
    int num1;

    num1 = 35 + 1 * 2;    // 1 * 2가 먼저 계산되므로 35 + 2가 됨

    printf("%d\n", num1);    // 37

    return 0;
}

실행 결과

37

연산자 우선순위에 따라 곱셈이 덧셈보다 우선하므로 1 * 2가 먼저 계산되어 37이 나옵니다. 기본적으로 계산식은 우선순위가 높은 연산자가 가장 먼저 계산되고, 결합 방향에 따라 순서대로 계산됩니다. +, *는 결합 방향이 →이므로 왼쪽에서 오른쪽 순으로 계산됩니다.

그럼 35 + 1이 먼저 계산되게 하려면 어떻게 해야 할까요?

bracket.c

#include <stdio.h>

int main()
{
    int num1;
 
    num1 = (35 + 1) * 2;    // 괄호를 사용하여 35 + 1을 먼저 계산한 뒤 2를 곱함

    printf("%d\n", num1);    // 72

    return 0;
}

실행 결과

72

연산자 우선순위가 낮지만 먼저 계산해야 할 식은 ( ) (괄호)로 묶어줍니다. 즉, (35 + 1) * 235 + 1이 먼저 계산되어 36이되고 2를 곱하여 72가 나옵니다.

여기서 괄호를 사용한 계산식의 계산 순서는 다음과 같습니다.

  1. 괄호를 사용한 연산자
  2. 우선순위가 높은 연산자
  3. 결합방향에 따라 순서대로 계산(+, *는 왼쪽에서 오른쪽)

보통 계산식의 의도를 명확하게 나타내기 위해 우선순위가 높은 연산자라도 괄호로 묶어줄 때가 많습니다.

num1 = 35 + (1 * 2);

괄호는 여러 번 겹쳐서 사용해도 됩니다. 계산 결과는 달라지지 않지만 복잡한 식의 가독성을 높이기 위해 주로 사용합니다.

num1 = ((35 + 1) * 2);