본문 바로가기

공부/프로그래밍

[프로그래밍] 오버플로우의 개념


해커가 나오는 프로그래밍이나 영화에서 전문용어를 이야기한다면 흔히 나오는 "오버플로우"란

'변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 발생하는 현상'을 말합니다. 


예를 들어 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