C#/연산자

[C#] 오버플로우와 언더플로우

도도돋치 2025. 3. 19. 15:38
Contents 접기
728x90

C#에서 정수형 변수는 특정 범위의 값만 저장할 수 있다.

이 범위를 벗어나면 오버플로우나 언더플로우가 발생한다.

오버플로우

최대값에서 1을 더해 오버플로우가 발생했다.
int maxInt = int.MaxValue; // int의 최대값 (2,147,483,647)
Console.WriteLine($"int의 최대값: {maxInt}");

int overflowResult = maxInt + 1; // 오버플로우 발생
Console.WriteLine($"오버플로우 결과: {overflowResult}"); // 출력: -2,147,483,648 (최소값으로 순환)

// checked 키워드를 사용하여 오버플로우 감지
checked
{
    try
    {
        int willOverflow = int.MaxValue;
        willOverflow = willOverflow + 1; // 예외 발생
    }
    catch (OverflowException e)
    {
        Console.WriteLine("오버플로우 예외 발생: " + e.Message);
    }
}

 

언더플로우

최소값에서 1을 빼 언더플로우가 발생했다.
int minInt = int.MinValue; // int의 최소값 (-2,147,483,648)
Console.WriteLine($"int의 최소값: {minInt}");
int underflowResult = minInt - 1; // 언더플로우 발생
Console.WriteLine($"언더플로우 결과: {underflowResult}"); // 출력: 2,147,483,647 (최대값으로 순환)

// checked 키워드를 사용하여 언더플로우 감지
checked
{
    try
    {
        int willUnderflow = int.MinValue;
        willUnderflow = willUnderflow - 1; // 예외 발생
    }
    catch (OverflowException e)
    {
        Console.WriteLine("언더플로우 예외 발생: " + e.Message);
    }
}

 

728x90

'C# > 연산자' 카테고리의 다른 글

[C#] 연산자 우선순위  (0) 2025.03.19
[C#] 논리연산자  (0) 2025.03.19
[C#] 관계(비교)연산자  (0) 2025.03.19
[C#] 복합 대입 연산자, 증감 연산자(++,--)  (0) 2025.03.19
[C#] 산술연산자  (0) 2025.03.19