티스토리 뷰

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <limits.h> // SHRT_MAX, USHRT_MAX를 사용하기 위함
 
int main(void)
{
    short s_money = SHRT_MAX; // 최대값으로 초기화 (32767)
    unsigned short u_money = USHRT_MAX; // 최대값으로 초기화 (65535)
 
    s_money = s_money + 1// 오버 플로우를 발생시킴
    printf("s_money = %d\n", s_money);
 
    u_money = u_money + 1// 오버 플로우를 발생시킴
    printf("u_money = %u\n", u_money);
 
    return 0;
}
 
cs

 

 

 

  - 결과  

 

 

 

  - 한마디  

<limits.h>는 정수형의 한계를 알려주는 헤더파일이다.

SHRT_MAX, USHRT_MAX는 각각 short, unsigned의 최대값을 나타내는 기호상수이다.

최대값(상한치)의 반대인 최소값(하한치)는 SHRT_MIN, USHRT_MIN으로 나타낸다.

 

short 자료형의 최대값은 32767,

unsigned short 자료형의 최대값은 65535이다.

unsigned는 0부터 양수값까지를 나타낸다.

 

short의 최대값인 32767에서 1을 더해 최대값을 초과하게 되면32768이 아닌 -32768이 출력되며이는 (-32768, -32767, -32766, .... , 32766, 32767) 과 같이

short 자료형의 범위를 일렬 구조로 생각한다면

32767 다음은 맨 앞인 -32768로 출력된다고 생각하면 쉽다.

unsigned short의 경우 65535를 초과하면 0이 된다.

 

변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 발생하는

위와 같은 경우를  오버플로우  라고 한다.

반대의 개념으로 언더플로우가 있다.

 

 

반응형
댓글
반응형
Recent Post.
Recent Reply.
Thanks for comming.
오늘은
명이 방문했어요
어제는
명이 방문했어요