본문 바로가기
프로그래밍언어/C언어

자료형이란 무엇인가 - 오버플로우와 언더플로우

by J코딩 2021. 10. 18.
반응형

정수형의 오버플로우와 언더플로우는 순환된 값을 출력한다.

 

우리는 이전에 각 자료형의 데이터 표현 범위(최소값, 최대값)을 배웠습니다. 이렇듯 각 자료형에는 데이터 표현 범위가 존재하는데 자료형에서 저장할 수 있는 최대 범위보다 큰 수를 저장하면 '오버플로우가 발생했다'라고 하고, 반대로 저장할 수 있는 최소 범위보다 작은 수를 저장하면 '언더플로우가 발생했다.'라고 합니다. 그리고 이런 오버플로우와 언더플로우가 발생했을 때 다음 그림처럼 값이 순환됩니다.

char형의 값의 순환

4행에서 정수형인 char형은 -128(최소값) ~ 127(최대값)의 데이터 표현 범위를 갖습니다. 변수 num1은 최소값 -128보다 작은 값인 -129를 저장하기 때문에 -1만큼의 언더플로우를 발생합니다.

 

6행에서 변수 num2는 최대값 127보다 큰 값인 128을 저장하기 때문에 +1만큼의 오버플로우가 발생합니다.

8행에서 최소값 -128보다 -1만큼 언더플로우가 발생해서 최대값 127이 출력됩니다.

 

10행에서 최대값 127보다 +1만큼 오버플로우가 발생해서 최소값 -128이 출력됩니다.

 

12행에서 변수 num1은 최소값 -128보다 작은 값인 -130을 저장하기 때문에 -2만큼의 언더플로우가 발생합니다.

 

14행에서 변수 num2는 최대값 127보다 큰 값인 129를 저장하기 때문에 +2만큼의 오버플로우가 발생합니다.

16행에서 최소값 -128보다 -2만큼의 언더플로우가 발생해서 126이 출력됩니다.

 

18행에서 최대값 127보다 +2만큼의 오버플로우가 발생해서 -127이 출력됩니다.

반응형

댓글