다음을 통해 공유


C# 연산자

업데이트: 2008년 7월

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

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

연산자 범주

연산자

기본 연산자

x.y

f(x)

a[x]

x++

x--

new

typeof

checked

unchecked

->

단항 연산자

+

-

!

~

++x

--x

(T)x

true

false

&

sizeof

승제 연산자

*

/

%

가감 연산자

+

-

시프트 연산자

<<

>>

관계 및 형식 테스트 연산자

<

>

<=

>=

is

as

같음 연산자

==

!=

논리곱

&

논리 XOR 연산자

^

논리합

|

조건부 논리곱 연산자

&&

조건부 논리합 연산자

||

조건 연산자

?:

할당 연산자

=

+=

-=

*=

/=

%=

&=

|=

^=

<<=

>>=

Null 결합

??

람다

=> 연산자(C# 참조)

산술 연산 오버플로

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

  • 정수 산술 연산 오버플로는 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#

변경 기록

날짜

변경 내용

원인

2008년 7월

고객의 제안에 따라 ?? 연산자를 할당 범주에서 이동했습니다.

콘텐츠 버그 수정