Share via


연산자(C# 프로그래밍 가이드)

C#에서 연산자는 식 또는 문에서 하나 이상의 피연산자에 적용되는 프로그램 요소입니다.증가 연산자(++)나 new 같이 피연산자 하나를 사용하는 연산자를 단항 연산자라고 합니다.산술 연산자(+, -, *, /) 같이 피연산자 두 개를 사용하는 연산자를 이항 연산자라고 합니다.조건 연산자(?:)는 피연산자 세 개를 사용하며 이는 C#에서 유일한 삼진 연산자입니다.

다음 C# 문에는 단항 연산자 하나와 피연산자 하나가 들어 있습니다.증가 연산자 ++는 피연산자 y의 값을 수정합니다.

y++;

다음 C# 문에는 이항 연산자가 두 개 있습니다. 각 연산자는 피연산자를 두 개씩 사용합니다.할당 연산자 =에는 정수 변수 y와 식 2 + 3이 피연산자로 사용됩니다.식 2 + 3 자체는 더하기 연산자와 두 개의 피연산자, 2 및 3으로 구성됩니다.

y = 2 + 3;

연산자, 평가, 및 연산자 우선 순위

피연산자는 유효한 식이거나 다른 연산으로 구성될 수 있는데 이때 식의 크기나 식의 수에는 제한이 없습니다.여러 연산자를 포함하는 식에서 연산자가 적용되는 순서는 operator precedence, associativity 및 괄호로 결정됩니다.

각 연산자에는 정의된 우선 순위가 있습니다.다른 우선 순위 수준을 가진 여러 연산자가 포함된 식에서 연산자의 우선 순위는 연산자가 평가되는 순서를 결정합니다.예를 들어, 다음 문은 n1에 3을 할당합니다.

n1 = 11 - 2 * 4;

곱셈은 뺄셈보다 우선하기 때문에 곱하기가 가장 먼저 실행됩니다.

다음 표에서는 연산자를 각각 수행하는 연산의 종류에 따라 범주별로 구분하여 보여 줍니다.이 범주는 우선 순위에 따라 나열되어 있습니다.

기본 연산자

설명

x.y

멤버 액세스 연산자

f(x)

메서드 및 대리자 호출

a[x]

배열 및 인덱서 액세스

x++

후위 증가

x--

후위 감소

new T(...)

개체 및 대리자 생성

new T(...){...}

이니셜라이저를 사용한 개체 생성.자세한 내용은 개체 및 컬렉션 이니셜라이저(C# 프로그래밍 가이드)를 참조하십시오.

new {...}

익명 개체 이니셜라이저.자세한 내용은 익명 형식(C# 프로그래밍 가이드)를 참조하십시오.

new T[...]

배열 생성.자세한 내용은 배열(C# 프로그래밍 가이드)를 참조하십시오.

typeof(T)

T에 대한 System.Type 개체 가져오기

checked(x)

checked 컨텍스트에서 식 계산

unchecked(x)

unchecked 컨텍스트에서 식 계산

default (T)

T 형식의 기본값 가져오기

delegate {}

익명 함수(익명 메서드)

단항 연산자

설명

+x

ID

-x

부정 연산

!x

논리 부정 연산

~x

비트 부정 연산

++x

전위 증가

--x

전위 감소

(T)x

x를 형식 T 형식으로 명시적 변환

승제 연산자

설명

*

곱하기

/

나누기

%

나머지

가감 연산자

설명

x + y

더하기, 문자열 연결, 대리자 결합

x - y

빼기, 대리자 제거

시프트 연산자

설명

x << y

왼쪽 시프트

x >> y

오른쪽 시프트

관계 및 형식 연산자

설명

x < y

보다 작음

x > y

보다 큼

x <= y

작거나 같음

x >= y

크거나 같음

x is T

x가 T이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

x as T

T로 형식화된 x 또는 null(x를 T로 형식화할 수 없는 경우)을 반환합니다.

같음 연산자

설명

x == y

같음

x != y

같지 않음

논리, 조건 및 null 연산자

범주

설명

논리곱

x & y

정수 비트 AND, Boolean 논리곱 연산자

논리 XOR 연산자

x ^ y

정수 비트 XOR, Boolean 논리 XOR 연산자

논리합

x | y

정수 비트 OR, Boolean 논리합 연산자

조건부 논리곱 연산자

x && y

x가 true인 경우에만 y를 계산합니다.

조건부 논리합 연산자

x || y

x가 false인 경우에만 y를 계산합니다.

Null 결합

x ?? y

x가 null인 경우 y로 계산하고, 그렇지 않으면 x로 계산합니다.

조건

x ?: y : z

x가 true이면 y로 계산되고 x가 false이면 z로 계산됩니다.

할당 및 익명 연산자

설명

=

할당 연산

x op= y

복합 할당.지원되는 연산자는 다음과 같습니다. +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>=

(T x) => y

익명 함수(람다 식)

결합성

우선 순위가 동일한 연산자 두 개 이상이 식 하나에 있으면 두 연산자의 결합성에 따라 연산 순서가 결정됩니다.왼쪽 결합성이 있는 연산자는 왼쪽에서 오른쪽으로 계산됩니다.예를 들어, x * y / z는 (x * y) / z와 같이 계산됩니다.오른쪽 결합성이 있는 연산자는 오른쪽에서 왼쪽으로 계산됩니다.예를 들어, 할당 연산자는 오른쪽 결합성이 있는 연산자입니다.아닌 경우 다음 코드 오류가 발생합니다.

int a, b, c;
c = 1;
// The following two lines are equivalent.
a = b = c;
a = (b = c);

// The following line, which forces left associativity, causes an error.
//(a = b) = c;

오른쪽 결합성이 있는 연산자로는 할당 연산자와 삼진 연산자(?:)가 있습니다.다른 모든 이항 연산자에는 왼쪽 결합성이 있습니다.

식에서 연산자가 왼쪽 결합성인지, 오른쪽 결합성인지에 따라 각 식의 피연산자가 먼저 평가됩니다.다음 예제는 연산자와 피연산자의 계산 순서를 보여 줍니다.

확인 순서

a = b

a, b, =

a = b + c

a, b, c, +, =

a = b + c * d

a, b, c, d, *, +, =

a = b * c + d

a, b, c, *, d, +, =

a = b - c + d

a, b, c, -, d, +, =

a += b -= c

a, b, c, -=, +=

괄호 추가

괄호를 사용하여 연산자 우선 순위와 연결을 통해 부과된 실행 순서를 변경할 수 있습니다.예를 들어, 2 + 3 * 2는 일반적으로 승제 연산자가 가감 연산자보다 우선하기 때문에 8로 평가됩니다.그러나 식을 (2 + 3) * 2처럼 작성하는 경우 곱셈 전에 덧셈이 계산되고 결과는 10입니다.다음 예제는 괄호로 묶인 식의 계산 순서를 보여 줍니다.이전 예제에서와 같이 피연산자는 연산자가 적용되기 전에 평가됩니다.

확인 순서

a = (b + c) * d

a, b, c, +, d, *, =

a = b - (c + d)

a, b, c, d, +, -, =

a = (b + c) * (d - e)

a, b, c, +, d, e, -, *, =

연산자 오버로드

사용자 지정 클래스 및 구조체에서 연산자의 동작을 변경할 수 있습니다.이러한 과정을 연산자 오버로드라고 합니다.자세한 내용은 오버로드할 수 있는 연산자(C# 프로그래밍 가이드)를 참조하십시오.

관련 단원

자세한 내용은 연산자 키워드(C# 참조)C# 연산자을 참조하십시오.

참고 항목

참조

문, 식, 연산자(C# 프로그래밍 가이드)

개념

C# 프로그래밍 가이드