전체 코드
#include <iostream>
using namespace std;
int hp = 100;
char a;
short b;
int c;
__int64 d;
unsigned char ua;
unsigned short ub;
unsigned int uc;
unsigned __int64 ud;
int main()
{
cout << "체력이 " << hp << " 남았습니다" << endl;
b = 32767;
b = b + 1;
cout << "오버플로우 결과: " << b << endl;
ub = 0;
ub = ub - 1;
cout << "언더플로우 결과: " << ub << endl;
return 0;
}
📌 1. 주석 단축키 정리
📌 2. 프로그래밍 기본 개념 정리
📌 3. 정수형 변수 선언과 메모리 영역
변수 선언 방법
초기화 여부에 따른 메모리 영역 배치
| 초기값 유무 | 저장 영역 |
|---|
| 초기값 0이 아님 | .data 영역 |
| 초기값 0 또는 없음 | .bss 영역 |
int hp = 100;
int level;
📌 4. 정수형 타입과 크기 및 범위
Signed 타입 (기본값)
| 타입 | 크기 | 범위 |
|---|
| char | 1바이트 | -128 ~ 127 |
| short | 2바이트 | -32,768 ~ 32,767 |
| int | 4바이트 | 약 -21억 ~ 21억 |
| __int64 (long long) | 8바이트 | 매우 큼 (-2^63 ~ 2^63-1) |
char a;
short b;
int c;
__int64 d;
Unsigned 타입 (부호 없음, 양수만 저장 가능)
| 타입 | 크기 | 범위 |
|---|
| unsigned char | 1바이트 | 0 ~ 255 |
| unsigned short | 2바이트 | 0 ~ 65,535 |
| unsigned int | 4바이트 | 0 ~ 약 42억 |
| unsigned __int64 | 8바이트 | 0 ~ 매우 큼 (2^64-1) |
unsigned char ua;
unsigned short ub;
unsigned int uc;
unsigned __int64 ud;
📌 5. 데이터 최적화 문제 (현업 감각)
📌 6. unsigned vs signed 논쟁
📌 7. 정수 오버플로우와 언더플로우 실습 예제 (중요)
오버플로우 예제 (signed)
short b = 32767;
b = b + 1;
cout << b << endl;
언더플로우 예제 (unsigned)
unsigned short ub = 0;
ub = ub - 1;
cout << ub << endl;
📌 9. 핵심 정리 요약
| 구분 | 설명 |
|---|
| 변수 초기화 있음 | .data 영역 |
| 변수 초기화 없음/0 | .bss 영역 |
| signed | 음수/양수 가능 (최상위 비트 = 부호비트) |
| unsigned | 양수만 가능 (범위 2배 확장) |
| 오버플로우 | 최대값 초과 시 최소값으로 순환 |
| 언더플로우 | 최소값 이하 시 최대값으로 순환 |
📌 10. 디버깅 팁 (어셈블리 연계 학습)
📌 11. 학습 포인트 총정리
✅ 정수 크기/범위 암기
✅ 메모리 영역 구분법 이해
✅ signed/unsigned 차이 숙지
✅ 오버플로우/언더플로우 원리 연습
✅ 디버깅 통해 메모리 실제 확인 연습
✅ 앞으로도 이런 방식으로 강의 정리 + 예제 분석 필요하면 언제든 요청 주세요!
✅ 더 심화된 내용 (비트 연산, 2의 보수 개념 등)도 필요하면 추가해드릴 수 있습니다.
혹시 추가로 설명 더 필요한 부분 있어요?
이번 자료 PDF로 변환해서 드릴 수도 있고, 다음 강의 정리도 이런 식으로 계속 이어서 도와줄게요! 🙌🏻