#include <iostream>
using namespace std;
// Ctrl+K+C(주석처리) Ctrl+K+U(주석처리 취소)
// 프로그래밍은 적절한 데이터를 저장하고 가공하는 것
// 데이터 + 로직
// 0이 아닌 초기화 값이 있으면 .data영역
int hp = 100;
//초기값이 0이거나, 초기값이 없는 변수라면 .bss 영역
char a; //1바이트 -128 ~ 127
short b; //2바이트 -32768 ~ 32767
int c; //4바이트 -21.4억 ~ 21.4억
__int64 d; //8바이트 (long long) 개큼
unsigned char a1; //1바이트 0~255
unsigned short b1; //2바이트 0~65535
unsigned int c1; //4바이트 0~42.9억
unsigned __int64 d1; //8바이트 (long long) 개큼
//이론적으로 양수만 존재할 수 있는 경우 unsigned를 고려해보자
//-레벨이 음수라는 것은 말이 안된다 <-> 그럼 차라리 그 자리에서 프로그램을 크래시 내서 버그를 빨리 찾는게 낫다
//-> 콘솔/모바일 게임 -> 메모리가 부족함
//-> 온라인 게임 -> 정보를 전송할 때 데이터 크기가 클 경우 낭비임 -> 많은 유저 보유시 더 낭비가 심함
int main()
{
b = 32767;
b = b + 1;
cout <<b<<endl; //-32768이 됨 ->정수 오버플로가 발생 ->오브젝트가 뜬금없이 사망하는 등의 버그 발생 가능
b1 = 0;
b1 = b1 - 1;
cout << b1 << endl; //65535가 됨 -> 정수 언더플로가 발생
}