이전 글 확인
오버플로우?
변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 발생하는 현상입니다. 바로 이전 포스팅인 자료형에서 보셨다 시피, 각 자료형은 크기와 범위를 가지고 있습니다. 이때, 정수형 자료형에 실수를 집어넣었을 때 범위를 넘어 발생하는 현상이 오버플로우 입니다.
아래 예제를 통해 간단히 오버플로우를 구현해 봅시다.
#include <stdio.h>
#include <limits.h>
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", s_money);
u_money = u_money + 1;
printf("u_money = %d", u_money);
return 0;
}
위의 코드를 실행시켜 보시면, 최대값이 제대로 출력되지 않고 오버플로우 현상을 보실 수 있습니다.
오버플로우의 규칙성
오버플로우는 수도 계량기나 자동차의 주행거리계와 비슷하게 동작합니다. 위 예제를 실행시키면 아시겠지만, short의 경우 최대값인 32767이 넘어갔을 때 -32768로 다시 처음 값으로 넘어가게 됩니다. unsigned short의 경우도 마찬가지로 0으로 다시 넘어오는 것을 확인하실 수 있습니다.
'C, C++' 카테고리의 다른 글
제어 문자 (0) | 2019.08.26 |
---|---|
기호상수(Symbolic constant) (0) | 2019.07.23 |
오버플로우(Overflow) (0) | 2019.07.18 |
자료형(Data Type) (0) | 2019.07.16 |
[C언어] 변수(Variable)와 상수(Constant) (0) | 2019.07.03 |
Visual Studio Community 버전 설치하기 (0) | 2019.04.07 |