unchecked(C# 참조)

업데이트: 2007년 11월

unchecked 키워드는 정수 계열 형식의 산술 연산 및 변환에 대한 오버플로 검사를 비활성화하는 데 사용됩니다.

unchecked 컨텍스트에서 식의 결과가 대상 형식의 범위를 벗어나는 경우 결과가 잘립니다. 예를 들면 다음과 같습니다.

unchecked
{
    int val = 2147483647 * 2;
}

위의 계산은 unchecked 블록에서 수행되므로 그 결과가 정수로서는 너무 크다는 사실이 무시되고 val이 값 -2에 할당됩니다. 오버플로 검사는 기본적으로 활성화되어 있으며 그 결과는 checked를 사용하는 경우와 같습니다.

위 예제에서 unchecked를 생략하면 컴파일 오류가 발생합니다. 식에 제약 조건이 사용되고 있으며 그 결과가 컴파일 타임에 알려져 있기 때문입니다. unchecked 키워드는 비상수 식에 대한 오버플로 검사도 비활성화합니다. 그렇지 않으면 런타임에 OverflowException이 발생합니다.

unchecked 키워드는 다음과 같이 연산자로 사용할 수도 있습니다.

public int UncheckedAdd(int a, int b)
{
    return unchecked(a + b);
}

예제

이 샘플에서는 상수 식이 있는 unchecked 문의 사용 방법을 보여 줍니다.

class TestClass 
{
    const int x = 2147483647;   // Max int 
    const int y = 2;

    static void Main() 
    {
        int z;
        unchecked 
        {
            z = x * y;
        }
        Console.WriteLine("Unchecked output value: {0}", z);
    }
}
// Output: Unchecked output value: -2

C# 언어 사양

자세한 내용은 C# 언어 사양의 다음 단원을 참조하십시오.

  • 5.3.3.2 블록 문, checked 및 unchecked 문

  • 7.5.12 checked 및 unchecked 연산자

  • 8.11 checked 및 unchecked 문

참고 항목

개념

C# 프로그래밍 가이드

참조

C# 키워드

Checked 및 Unchecked(C# 참조)

checked(C# 참조)

기타 리소스

C# 참조