• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • [C++ 프로그래밍] 연산자 우선순위와 결합법칙
    2024년 06월 24일
    • 유니얼
    • 작성자
    • 2024.06.24.:09
    728x90

    C++ 기초 프로그래밍: 연산자 우선순위와 결합법칙

    C++ 프로그래밍에서 연산자 우선순위(Precedence)와 결합법칙(Associativity)은 수식의 계산 순서를 결정하는 중요한 개념입니다. 연산자 우선순위는 연산자가 실행되는 순서를 정의하고, 결합법칙은 동일한 우선순위를 가진 연산자가 실행되는 방향을 정의합니다. 이번 블로그 글에서는 연산자 우선순위와 결합법칙에 대해 알아보고, 예제를 통해 그 개념을 이해하겠습니다.

    연산자 우선순위

    연산자 우선순위는 연산자가 실행되는 순서를 결정합니다. 예를 들어, 곱셈(*)과 나눗셈(/)은 덧셈(+)과 뺄셈(-)보다 높은 우선순위를 가집니다. 따라서, 먼저 곱셈과 나눗셈이 수행된 후 덧셈과 뺄셈이 수행됩니다.

    결합법칙

    결합법칙은 동일한 우선순위를 가진 연산자가 실행되는 방향을 결정합니다. 대부분의 이항 연산자(+, -, *, / 등)는 왼쪽에서 오른쪽(Left-to-Right)으로 결합됩니다. 즉, 왼쪽에 있는 연산자가 먼저 실행됩니다.

    연산자 우선순위 도표

    다음은 C++ 연산자의 우선순위와 결합법칙을 정리한 도표입니다:

     

    우선순위 연산자 설명 결합법칙
    1 :: 범위 결정 연산자 Left-to-Right
    2 ++ -- 후위 증가 및 감소 연산자 Left-to-Right
    3 ++ -- + - ! ~ 전위 증가 및 감소, 단항 연산자 Right-to-Left
    4 * / % 곱셈, 나눗셈, 나머지 연산자 Left-to-Right
    5 + - 덧셈, 뺄셈 연산자 Left-to-Right
    6 << >> 비트 이동 연산자 Left-to-Right
    7 < <= > >= 비교 연산자 Left-to-Right
    8 == != 동등성 연산자 Left-to-Right
    9 & 비트 AND 연산자 Left-to-Right
    10 ^ 비트 XOR 연산자 Left-to-Right
    11 ` ` 비트 OR 연산자
    12 && 논리 AND 연산자 Left-to-Right
    13 `
    `
    14 ? : 조건 연산자 Right-to-Left
    15 = += -= *= /= %= <<= >>= &= ^= ` =` 할당 연산자
    16 , 쉼표 연산자 Left-to-Right

    예제 코드

    다음 예제 코드는 연산자 우선순위와 결합법칙을 보여줍니다:

    #include <iostream>
    
    int main() {
        int a {6};
        int b {3};
        int c {8};
        int d {9};
        int e {3};
        int f {2};
        int g {5};
            
        int result = a + b * c - d / e - f + g; // 6 + 24 - 3 - 2 + 5
        std::cout << "result : " << result << std::endl;
    
        result = a / b * c + d - e + f; // 16 + 9 - 3 + 2
        std::cout << "result : " << result << std::endl;
    
        result = (a + b) * c - d / e - f + g; // 72 - 3 - 2 + 5
        std::cout << "result () : " << result << std::endl;
    
        return 0;
    }

    출력 결과

    위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

    result : 30
    result : 24
    result () : 72
    

    예제 분석

    1. 첫 번째 수식: a + b * c - d / e - f + g 연산자 우선순위에 따라 곱셈과 나눗셈이 먼저 수행됩니다. 따라서 수식은 다음과 같이 변환됩니다:
    6 + 24 - 3 - 2 + 5
     왼쪽에서 오른쪽으로 차례대로 계산하면 결과는 30이 됩니다. 
    • b * c는 3 * 8로 24가 됩니다.
    • d / e는 9 / 3로 3이 됩니다.
    1. 두 번째 수식: a / b * c + d - e + f 마찬가지로 곱셈과 나눗셈이 먼저 수행됩니다. 따라서 수식은 다음과 같이 변환됩니다:
    16 + 9 - 3 + 2
     왼쪽에서 오른쪽으로 차례대로 계산하면 결과는 24가 됩니다. 
    • a / b는 6 / 3로 2가 됩니다.
    • 2 * c는 2 * 8로 16이 됩니다.
    1. 세 번째 수식: (a + b) * c - d / e - f + g 괄호 안의 연산이 먼저 수행됩니다. 따라서 수식은 다음과 같이 변환됩니다:
    72 - 3 - 2 + 5
     왼쪽에서 오른쪽으로 차례대로 계산하면 결과는 72가 됩니다. 
    • a + b는 6 + 3으로 9가 됩니다.
    • 9 * c는 9 * 8로 72가 됩니다.
    • d / e는 9 / 3로 3이 됩니다.

    결론

    C++에서 연산자 우선순위와 결합법칙을 이해하는 것은 수식을 정확하게 계산하는 데 필수적입니다. 연산자 우선순위는 연산자가 실행되는 순서를 결정하고, 결합법칙은 동일한 우선순위를 가진 연산자가 실행되는 방향을 결정합니다.

    반응형
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바