C#은 다양한 연산자(식에서 수행할 연산을 지정하는 기호) 집합을 제공합니다. 열거형에 대해서는 일반적으로 ==, !=, <, >, <=, >=, binary +, binary -, ^, &, |, ~, ++, -- 및 sizeof() 같은 정수 계열 형식의 연산을 수행할 수 있습니다. 또한 많은 연산자가 사용자에 의해 오버로드될 수 있으므로 연산자가 사용자 정의 형식에 적용될 때는 의미가 달라질 수 있습니다.
다음 표에서는 C# 연산자를 우선 순위에 따라 그룹화하여 보여 줍니다. 각 그룹 내의 연산자는 우선 순위가 같습니다.
| 연산자 범주 | 연산자 |
|---|---|
| 기본 연산자 | |
| 단항 연산자 | |
| 승제 연산자 | |
| 가감 연산자 | |
| 시프트 연산자 | |
| 관계 및 형식 테스트 연산자 | |
| 같음 연산자 | |
| 논리곱 | |
| 논리 XOR 연산자 | |
| 논리합 | |
| 조건부 논리곱 연산자 | |
| 조건부 논리합 연산자 | |
| 조건 연산자 | |
| 할당 연산자 |
산술 연산자(+, -, *, /)로 인해 관련된 숫자 형식에서 사용할 수 있는 값의 범위를 벗어난 결과가 발생할 수 있습니다. 특정 연산자에 대한 자세한 내용은 해당 연산자에 대한 단원을 참조해야 합니다. 다음은 일반적인 사항입니다.
-
정수 산술 연산 오버플로는 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#에서는 오버플로를 처리할 것인지 또는 무시할 것인지를 선택할 수 있습니다.
산술 연산자 이외에도 정수 계열 형식 간의 캐스트(예: long을 int로 캐스팅)로 인해 오버플로가 발생할 수 있으며 checked 또는 unchecked될 수 있습니다. 그러나 비트 연산자와 시프트 연산자는 오버플로를 일으키지 않습니다.
작업
연산자 오버로드 샘플참조
오버로드할 수 있는 연산자(C# 프로그래밍 가이드)C# 키워드
개념
C# 프로그래밍 가이드기타 리소스
C# 참조Visual C#