해커가 나오는 프로그래밍이나 영화에서 전문용어를 이야기한다면 흔히 나오는 "오버플로우"란
'변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 발생하는 현상'을 말합니다.
예를 들어 1L짜리 비커에 1.1L를 들이부었을 때 일어나는 일이라는 거죠.
수도계량기나 주행거리계 또는 만보기가 최대 수치를 넘어가면 결국 다시 0000으로 돌아오는 것도 같은 맥락입니다.
간단하게 이를 예제로 짜서 실행해보면
#include <iostream>
using namespace std;
int main()
{
int a = INT_MAX; // 해당 자료형의 최대 또는 최솟값을 지정하는 INT_MAX나 SHRT_MIN 같은 지정어는 대문자로 써줘야 합니다.
cout <<"INT_MAX = "<< a <<endl;
a = a+1;
cout << "INT_MAX + 1 = " << a <<" <- 오버플로우 되었다.";
return 0;
}
INT_MAX는 2147483647이고
INT의 범위는 -2147483648 ~ 2147483647 이므로 +1을 하면 오버플로우 되어
-2147483648이 되는 것이죠.
728x90
'공부 > 프로그래밍' 카테고리의 다른 글
천인국 'Power C++' 중간점검 답 (0) | 2017.10.25 |
---|---|
[C++] 자료형 (0) | 2017.10.03 |
[C++] C언어 초급 명령어 (0) | 2017.10.03 |
C++ 프로그래밍의 기본 구조 (0) | 2017.10.02 |
ASCII 코드 (0) | 2017.10.02 |