C# 연산자
업데이트: 2008년 7월
C#은 다양한 연산자(식에서 수행할 연산을 지정하는 기호) 집합을 제공합니다. 열거형에 대해서는 일반적으로 ==, !=, <, >, <=, >=, binary +, binary -, ^, &, |, ~, ++, -- 및 sizeof() 같은 정수 계열 형식의 연산을 수행할 수 있습니다. 또한 많은 연산자가 사용자에 의해 오버로드될 수 있으므로 연산자가 사용자 정의 형식에 적용될 때는 의미가 달라질 수 있습니다.
다음 표에서는 C# 연산자를 우선 순위에 따라 그룹화하여 보여 줍니다. 각 그룹 내의 연산자는 우선 순위가 같습니다.
연산자 범주 |
연산자 |
---|---|
기본 연산자 |
|
단항 연산자 |
|
승제 연산자 |
|
가감 연산자 |
|
시프트 연산자 |
|
관계 및 형식 테스트 연산자 |
|
같음 연산자 |
|
논리곱 |
|
논리 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#에서는 오버플로를 처리할 것인지 또는 무시할 것인지를 선택할 수 있습니다.
산술 연산자 이외에도 정수 계열 형식 간의 캐스트(예: long을 int로 캐스팅)로 인해 오버플로가 발생할 수 있으며 checked 또는 unchecked될 수 있습니다. 그러나 비트 연산자와 시프트 연산자는 오버플로를 일으키지 않습니다.
참고 항목
작업
개념
참조
기타 리소스
변경 기록
날짜 |
변경 내용 |
원인 |
---|---|---|
2008년 7월 |
고객의 제안에 따라 ?? 연산자를 할당 범주에서 이동했습니다. |
콘텐츠 버그 수정 |