Page 71 고등학교 프로그래밍 교과서
P. 71
더
알아보기 오버플로우와 언더플로우
오버플로우는 메모리가 표현 범위를 초과하는 수의 값을 저장하는 경우이며, 언더플로우는 메모리가 표현할 수 있
는 수보다 작은 수를 저장하는 경우이다. 다음 프로그램을 통해 오버플로우와 언더플로우가 어떻게 쓰여지는지 확인
해 보자.
프로그램
01 #include
02 #include
03 int main( )
정수형 범위를 나타내는 상수를 정의함.
04 {
05 printf("char의 최솟값: %6d, char의 최댓값: %6d\n", CHAR_MIN, CHAR_MAX);
06 printf("short의 최솟값: %6d, short의 최댓값: %6d\n", SHRT_MIN, SHRT_MAX);
07 char cA = 128, cB = -129;
08 short sA = 32768, sB = -32769;
09 printf("%d %d\n", cA, cB);
10 printf("%d %d\n", sA, sB);
11 return 0;
12 }
실행 결과
char의 최솟값: -128, char의 최댓값: 127
short의 최솟값: -32768, short의 최댓값: 32767
-128 127
-32768 32767
+1만큼 overflow
-128 -127 -126 -125 …… …… 124 125 126 127
-1만큼 underflow
char 변수 cA값 128은 char자료형의 최댓값(127)을 넘어 오버플로우된다.
char 변수 cB값 -129는 char자료형의 최솟값(-128)을 넘어 언더플로우된다.
1. 변수와 자료형 69
(책)2015프로그래밍-교과서3차심의본 본문.indb 69 2017-09-05 오후 4:16:03