산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 연산자 우선순위와 결합성 마스터하기: 실전 가이드

C# 연산자 우선순위와 결합성 마스터하기

이 심층 튜토리얼에서는 C# 컴파일러가 연산자 우선순위와 결합성 규칙을 적용하여 식을 평가하는 방식을 설명합니다. 명확한 예제와 참조 표를 통해 학습하세요.

C#의 연산자 우선순위

연산자 우선순위는 식의 각 부분이 평가되는 순서를 정의합니다. 각 C# 연산자는 고정된 우선순위 레벨을 가지므로 컴파일러는 표현식을 일관되게 처리합니다.

예를 들어, 곱셈 연산자 *는 덧셈 +보다 우선순위가 높습니다. 따라서

int x = 4 + 3 * 5;
식에서 곱셈이 먼저 수행되어 x = 19가 됩니다.

만약 덧셈이 곱셈보다 우선한다면 결과는 35가 되겠지만, C#은 확립된 우선순위 계층을 따릅니다.


연산자 우선순위 표

아래 표는 연산자를 높은 우선순위에서 낮은 순서로 나열합니다.

++, --++, --, +, -, !, ~*, /, %+, -<<, >><, <=, >, >===, !=&^|&&||? :=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
C# 연산자 우선순위
범주연산자
후위 증가/감소
전위 증가/감소 및 단항
승법적
가법적
시프트
관계형
동등성
비트 AND
비트 XOR
비트 OR
논리 AND
논리 OR
삼항
대입

대입 연산자는 가장 낮은 우선순위를 가지며, 후위 증가/감소가 최상위에 위치합니다.


예제 1: 연산자 우선순위

using System;
namespace OperatorDemo {
    class OperatorPrecedence {
        public static void Main(string[] args) {
            int result1;
            int a = 5, b = 6, c = 4;
            result1 = --a * b - ++c;
            Console.WriteLine(result1);
            bool result2;
            result2 = b >= c + a;
            Console.WriteLine(result2);
        }
    }
}

실행 결과:

19 False

평가 단계:

두 번째 식에서 덧셈 +가 비교 >=보다 우선하므로 c + a가 먼저 평가됩니다.


C# 연산자의 결합성

두 연산자가 같은 우선순위를 가질 때, 컴파일러는 결합성을 사용해 평가 순서를 결정합니다. 대부분의 C# 연산자는 왼쪽에서 오른쪽(Left-to-Right)으로 결합하지만, 일부는 오른쪽에서 왼쪽(Right-to-Left)으로 결합합니다.

예시:

int a = 5, b = 6, c = 3;
int result = a * b / c;

*와 /는 왼쪽에서 오른쪽으로 결합하므로 곱셈이 먼저 수행되어 10이 됩니다.

오른쪽에서 왼쪽 결합성은 대입 연산 체인에서 중요합니다:

int a = 5, b = 6, c = 3;
a = b = c;

값 3이 b에 대입되고, 다시 b가 a에 대입되어 모든 변수가 3을 갖게 됩니다.

C# 연산자 결합성 요약

C# 연산자 결합성
범주연산자결합성
후위 증가/감소++, --왼쪽 → 오른쪽
전위 증가/감소 및 단항++, --, +, -, !, ~오른쪽 → 왼쪽
승법적*, /, %왼쪽 → 오른쪽
가법적+, -왼쪽 → 오른쪽
시프트<<, >>왼쪽 → 오른쪽
관계형<, <=, >, >=왼쪽 → 오른쪽
동등성==, !=왼쪽 → 오른쪽
비트 AND&왼쪽 → 오른쪽
비트 XOR^왼쪽 → 오른쪽
비트 OR|왼쪽 → 오른쪽
논리 AND&&왼쪽 → 오른쪽
논리 OR||왼쪽 → 오른쪽
삼항? :오른쪽 → 왼쪽
대입=, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=오른쪽 → 왼쪽

주요 오른쪽→왼쪽 연산자로는 전위 단항 연산자, 삼항 연산자, 모든 대입 연산자가 있습니다.


예제 2: 결합성 실전

using System;
namespace OperatorDemo {
    class OperatorAssociativity {
        public static void Main(string[] args) {
            int a = 5, b = 6, c = 3;
            int result = a * b / c;
            Console.WriteLine(result);
            a = b = c;
            Console.WriteLine($"a = {a}, b = {b}, c = {c}");
        }
    }
}

출력:

10
a = 3, b = 3, c = 3

C 언어

  1. C# 키워드와 식별자 이해: 규칙, 목록, 모범 사례
  2. C# 연산자 – C# 연산자 종합 가이드
  3. C# 삼항 연산자: 조건부 표현식을 간결하게 작성하는 법
  4. C# 클래스와 객체: 견고한 OOP를 위한 기초 다지기
  5. C# 추상 클래스와 추상 메서드: 실전 가이드
  6. C# partial 클래스와 partial 메서드 이해하기
  7. C# sealed 클래스와 메서드: 상속/오버라이딩 제한으로 코드 안전성·성능 높이기
  8. C++ 연산자 총정리: 종류, 예제, 샘플 프로그램
  9. C 상수와 리터럴: 정수, 실수, 문자, 문자열, 심볼릭 상수 정의법
  10. C 입출력(I/O) 마스터: 표준 스트림, 문자/행/포맷 입출력 함수 총정리