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
   66   67   68   69   70   71   72   73   74   75   76