C 프로그래밍에서 연산자 우선순위 존중하기

CBeginner
지금 연습하기

소개

이 실습에서는 C 프로그래밍에서 기본적인 산술 연산을 수행할 때 연산자 우선순위를 존중하는 방법을 배웁니다. 변수를 선언하고 표현식을 구성한 후, 괄호를 사용하여 평가 순서를 제어하는 방법을 탐색합니다. 마지막으로 최종 결과를 출력하여 연산자 우선순위의 영향을 관찰합니다. 이 실습은 C 에서 기본적인 산술 연산의 기본 개념을 다루며, 더 복잡한 프로그램을 구축하는 데 필수적입니다.

변수 선언 및 표현식 구성

이 단계에서는 변수를 선언하고 C 에서 연산자 우선순위를 보여주는 산술 표현식을 만드는 방법을 배웁니다.

먼저 ~/project 디렉토리에 새로운 C 파일을 만듭니다.

cd ~/project
nano order_of_operations.c

이제 다음 코드를 입력합니다.

#include <stdio.h>

int main() {
    int a = 10;
    int b = 5;
    int c = 3;

    int result = a + b * c;

    printf("Result of a + b * c: %d\n", result);

    return 0;
}

코드를 살펴보겠습니다.

  • 세 개의 정수 변수 a, b, c를 선언합니다.
  • 기본 연산자 우선순위를 보여주는 표현식 a + b * c를 만듭니다.
  • printf 문은 이 계산의 결과를 출력합니다.

프로그램을 컴파일하고 실행합니다.

gcc order_of_operations.c -o order_of_operations
./order_of_operations

예상 출력:

Result of a + b * c: 25

이 예제에서 곱셈 (b * c) 은 덧셈 (a + ...) 보다 C 의 표준 연산자 우선순위에 따라 먼저 수행됩니다. 계산은 a + (b * c)와 동일하며, 10 + (5 * 3) = 10 + 15 = 25입니다.

괄호를 사용하여 평가 순서 제어

이 단계에서는 C 산술 표현식에서 연산 순서를 변경하기 위해 괄호를 사용하는 방법을 배웁니다.

이전 파일을 열어 코드를 수정합니다.

cd ~/project
nano order_of_operations.c

이전 코드를 다음과 같이 바꿉니다.

#include <stdio.h>

int main() {
    int a = 10;
    int b = 5;
    int c = 3;

    // 괄호를 사용하여 평가 순서 변경
    int result_with_parentheses = a + (b * c);
    int result_without_parentheses = a + b * c;

    printf("괄호 사용 결과 (a + (b * c)): %d\n", result_with_parentheses);
    printf("괄호 미사용 결과 (a + b * c): %d\n", result_without_parentheses);

    return 0;
}

프로그램을 컴파일하고 실행합니다.

gcc order_of_operations.c -o order_of_operations
./order_of_operations

예상 출력:

괄호 사용 결과 (a + (b * c)): 25
괄호 미사용 결과 (a + b * c): 25

이 예제에서:

  • a + (b * c)는 곱셈이 먼저 수행됨을 명시적으로 보여줍니다.
  • 기본 연산자 우선순위로 인해 곱셈이 덧셈보다 먼저 수행되므로 이전 예제와 결과가 동일합니다.
  • 괄호는 의도된 연산 순서를 명확하게 나타내며, 더 복잡한 표현식에서 계산을 변경하는 데 도움이 됩니다.

최종 결과 출력

이 단계에서는 더 복잡한 산술 표현식을 만들고 연산 순서를 보여주는 자세한 결과를 출력하여 이전 예제를 확장합니다.

파일을 열어 코드를 수정합니다.

cd ~/project
nano order_of_operations.c

이전 코드를 다음과 같이 바꿉니다.

#include <stdio.h>

int main() {
    int a = 10;
    int b = 5;
    int c = 3;
    int d = 2;

    // 여러 연산이 포함된 복잡한 표현식
    int result_default = a + b * c - d;
    int result_with_parentheses = a + (b * c - d);

    printf("원본 표현식 분석:\n");
    printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);

    printf("\n기본 평가 (a + b * c - d):\n");
    printf("단계 1: b * c = %d\n", b * c);
    printf("단계 2: a + (b * c) = %d\n", a + (b * c));
    printf("단계 3: (a + b * c) - d = %d\n", result_default);

    printf("\n괄호 평가 (a + (b * c - d)):\n");
    printf("단계 1: b * c - d = %d\n", b * c - d);
    printf("단계 2: a + (b * c - d) = %d\n", result_with_parentheses);

    return 0;
}

프로그램을 컴파일하고 실행합니다.

gcc order_of_operations.c -o order_of_operations
./order_of_operations

예상 출력:

원본 표현식 분석:
a = 10, b = 5, c = 3, d = 2

기본 평가 (a + b * c - d):
단계 1: b * c = 15
단계 2: a + (b * c) = 25
단계 3: (a + b * c) - d = 23

괄호 평가 (a + (b * c - d)):
단계 1: b * c - d = 13
단계 2: a + (b * c - d) = 23

핵심 내용:

  • 코드는 괄호가 연산 순서를 어떻게 변경할 수 있는지 보여줍니다.
  • 표현식의 단계별 평가를 보여줍니다.
  • 두 표현식 모두 최종적으로 같은 값 (23) 을 갖습니다.

요약

이 실습에서는 C 프로그래밍에서 연산자 우선순위를 존중하는 방법을 배웠습니다. 먼저 변수를 선언하고 산술 표현식을 구성하여 곱셈이 덧셈보다 먼저 수행되는 기본 연산자 우선순위를 보여주었습니다. 그런 다음 괄호를 사용하여 평가 순서를 제어하고 표현식의 결과를 변경했습니다. 연산자 우선순위의 중요성을 이해하고 괄호를 효과적으로 사용함으로써 더 정확하고 예측 가능한 C 프로그램을 작성할 수 있습니다.