C#/C#_기초강의

(C#) 연산자 우선순위(Operator precedence)

코딩ABC 2023. 4. 21. 06:38
반응형

연산자 우선순위

여러 개의 연산자가 있는 식에서 우선 순위가 높은 연산자는 우선 순위가 낮은 연산자보다 먼저 계산됩니다.

예를 들어, 다음 식은 더하기 보다 곱하기가 먼저 연산됩니다.

int a = 2 + 2 * 3;
Console.WriteLine(a); //  output: 8

괄호를 사용하여 연산 우선 순위의 계산 순서를 바꿀 수 있습니다.

var a = (2 + 2) * 3;
Console.WriteLine(a); //  output: 12

 

다음 표는 우선 순위가 높은 것부터 시작하여 낮은 순서대로 연산자를 나열한 것입니다.

각 행의 연산자는 우선 순위가 같습니다.

 

 연산자 범주 또는 이름 
x.y, f(x), a[i], x?.y, x++, x--, x!, new, typeof, checked, unchecked,
default, nameof, delegate, sizeof, atackalloc 
 기본
+x, -x, !x, ~x, ++x, --x, ^x, (T)x, await, x, &*x, true 및 false 단항 연산자
x..y 범위
switch, width switch 식 및 width 식
x*y, x/y, x%y 곱하기
x+y, x-y 더하기
x<<y, x>>y Shift
x<y, x>y, x<=y, x>=y, is, as 관계 및 형식 테스트
x==y, x!=y 같음
x & y 부울 논리 AND 또는 
비트 논리 AND
x ^ y 부울 논리 XOR 또는
비트 논리 XOR
x | y OR 또는 비트 논리 OR
x && y 조건부 AND
x || y 조건부 OR
X?? y Null 병합 연산자
C? t:f 조건 연산자
x=y, x+=y, x-=y, x*=y, x/=y, x%=y, x&=y, x|=y, x^=y, x<<=y, x>>=y, => 할당 및 람다 선언

 

연산자 결합성

연산자의 우선 순위가 같으면 연산자 결합성이 연산의 수행되는 순서를 결정합니다.

  • ‘왼쪽 결합성이 있는’ 연산자는 왼쪽에서 오른쪽으로 계산됩니다. 대입 연산자 및 null 병합 연산자 를 제외하고, 모든 이진 연산자는 왼쪽 결합성이 있습니다. 예를 들어, a + b - c는 (a + b) - c로 계산됩니다.
  • ‘오른쪽 결합성이 있는’ 연산자는 오른쪽에서 왼쪽으로 계산됩니다.
    • 할당 연산자
    • null 병합 연산자
    • 람다 및 조건부 연산
    • ?: 자는 오른쪽 결합형입니다.
      예를 들어, x = y = z는 x = (y = z)로 계산됩니다.

괄호를 사용하면 연산자 결합성에 따른 주어진 계산 순서를 변경할 수 있습니다.

static void Main(string[] args)
{
    int a = 13 / 5 / 2;
    int b = 13 / (5 / 2);
    Console.WriteLine($"a = {a}, b = {b}");  // output: a = 1, b = 6
}

연산자 우선순위

 

반응형