C# 연산자

C#은 다양한 연산자(식에서 수행할 연산을 지정하는 기호) 집합을 제공합니다. 정수 형식의 작업(예: ==, !=, <, >, <=, >=, binary +, binary -, ^, &) |, ~, ++, -- 및 sizeof()은 일반적으로 열거형에서 허용됩니다. 또한 많은 연산자가 사용자에 의해 오버로드될 수 있으므로 연산자가 사용자 정의 형식에 적용될 때는 의미가 달라질 수 있습니다.

다음 표에서는 C# 연산자를 우선 순위에 따라 그룹화하여 보여 줍니다. 각 그룹 내의 연산자는 우선 순위가 같습니다.

연산자 범주

연산자

기본 연산자

x.y

f(x)

a[x]

x++

x--

new

typeof

checked

unchecked

기본값(T)

대리자

->

단항

+

-

!

~

++x

--x

(T)x

true

false

&

sizeof

승제

*

/

%

가감

+

-

Shift

<<

>>

관계 및 형식 테스트 연산자

<

>

<=

>=

이 선언은 아래 선언과 같습니다.

as

같음

==

!=

논리곱

&

논리 XOR 연산자

^

논리합

|

조건부 논리곱 연산자

&&

조건부 논리합 연산자

||

Null 결합

??

조건

?:

할당 및 람다 식

=

+=

-=

*=

/=

%=

&=

|=

^=

<<=

>>=

=> 람다 연산자

산술 연산 오버플로

산술 연산자(+, -, *, /)로 인해 관련된 숫자 형식에서 사용할 수 있는 값의 범위를 벗어난 결과가 발생할 수 있습니다. 특정 연산자에 대한 자세한 내용은 해당 연산자에 대한 단원을 참조해야 합니다. 다음은 일반적인 사항입니다.

  • 정수 산술 연산 오버플로는 OverflowException을 throw하거나 결과의 MSB(최상위 비트)를 무시합니다. 정수를 0으로 나누면 항상 DivideByZeroException을 throw합니다.

  • IEEE 754를 기반으로 하는 부동 소수점 형식에는 무한 값과 NaN(Not a Number)을 표현하는 규정이 있기 때문에 부동 소수점 산술 연산 오버플로 또는 0으로 나누기는 예외를 throw하지 않습니다.

  • decimal 산술 연산 오버플로는 항상 OverflowException을 throw합니다. decimal을 0으로 나누면 항상 DivideByZeroException을 throw합니다.

정수 오버플로가 발생할 경우 결과는 실행 컨텍스트(Checked 및 Unchecked)에 따라 다릅니다. checked 상태의 컨텍스트에서는 OverflowException이 throw됩니다. unchecked 상태의 컨텍스트에서는 결과의 MSB(최상위 비트)가 무시되고 계속 실행됩니다. 따라서 C#에서는 오버플로를 처리할 것인지 또는 무시할 것인지를 선택할 수 있습니다.

산술 연산자 이외에도 정수 계열 형식 간의 캐스트(예: longint로 캐스팅)로 인해 오버플로가 발생할 수 있으며 checked 또는 unchecked될 수 있습니다. 그러나 비트 연산자와 시프트 연산자는 오버플로를 일으키지 않습니다.

참고 항목

참조

오버로드할 수 있는 연산자(C# 프로그래밍 가이드)

C# 키워드

개념

C# 프로그래밍 가이드

기타 리소스

C# 참조

Visual C#