상위 목록: 하위 목록: 작성 날짜: 읽는 데 5 분 소요

오버플로(Overflow) & 언더플로(Underflow)

데이터 형식의 범위 밖의 연산이 발생하였을 때 범위보다 큰 수나 작은 수가 입력되어 값이 달라지는 현상입니다.

산술적인 연산을 해야하는 프로그램에서 오버플로(오버플로우)언더플로(언더플로우)가 발생하면 결과값이 달라지는 오류가 발생합니다.



오버플로(Overflow)

private void Form1_Load(object sender, EventArgs e)
{
    int flow = 2147483647;
    textBox1.Text = Convert.ToString(flow + 1);
}

데이터 형식의 범위를 넘어가는 값일 경우 오버플로가 발생하여 제일 작은 음수 값으로 넘어가게됩니다.



언더플로(Underflow)

private void Form1_Load(object sender, EventArgs e)
{
    int flow = -2147483648;
    textBox1.Text = Convert.ToString(flow - 1);
}

데이터 형식의 범위를 넘어가는 값일 경우 언더플로가 발생하여 제일 큰 양수 값으로 넘어가게 됩니다.



플로 해결

오버플로언더플로가 발생 시, 명시적으로 알기 어렵습니다.

변수를 명시적으로 범위가 더 큰 변수로 변경시켜주거나 산술 연산시 빌드 설정을 통하여 명시적으로 알 수 있습니다.


상단의 메뉴에서 프로젝트프로젝트 속성으로 들어갑니다.


왼쪽의 탭 메뉴 중 빌드를 선택하고 가장 아래의 고급버튼을 클릭합니다.


고급 빌드 설정에서 산술 연산 오버플로/언더플로 확인(K)에 체크한 후 확인 버튼을 클릭합니다.


오버플로언더플로 발생 시 오류 메세지를 통하여 플로를 확인할 수 있습니다.

댓글 남기기