inblog logo
|
Gyeongwon's blog
    Java

    [자바 #4] 오버플로우와 언더플로우

    도경원's avatar
    도경원
    Aug 21, 2025
    [자바 #4] 오버플로우와 언더플로우
    오버플로우란 타입이 허용하는 최대값을 벗어나는 것을 말한다. 반대로 언더플로우는 타입이 허용하는 최소값을 벗어나는 것을 말한다. 정수 타입 연산에서 오버플로우 또는 언더플로우가 발생되면 실행 에러가 발생할 것 같지만, 그렇지 않고 해당 정수 타입의 최솟값 또는 최대값으로 되돌아간다.
    byte value = 127; value++; System.out.println(value); // -128
    byte 타입일 경우 최대값 127에서 1을 더하면 128이 되어 오버플로우 발생하고, 연산 결과는 최소값인 -128이 된다.
    byte value = -128; value--; System.out.println(value); // 127
    마찬가지로 -128에서 1을 빼면 -129가 되어 언더플로우가 발생하는데, 연산 결과는 최대값인 127이 된다. 그리고 다시 1을 빼면 126이 된다.
    ❗
    연산 과정 중에 발생한느 오버플로우와 언더플로우는 우리가 기대하는 값이 아니다. 만약 연산 과정에서 int 타입에서 오버플로우 또는 언더플로우가 발생될 가능성이 있다면 long 타입으로 연산을 하도록 해야한다.
    Share article

    Gyeongwon's blog

    RSS·Powered by Inblog