이번 Step에서 잡아야 할 것
- 타입을 정하는 이유: 해석 방식(정수/문자/실수) + 크기(범위) 결정
- Signed vs Unsigned: 음수 표현 여부가 범위를 바꾼다
- 실전 기준: 대부분
int, 큰 수는 long long, 메모리 최적화는 “필요할 때만”
타입을 정하는 이유
- 컴퓨터는 0과 1만 저장합니다.
- 같은 0과 1이라도 타입에 따라 의미가 달라집니다.
- 예:
01000001은 char로 보면 'A', int로 보면 숫자 65처럼 해석될 수 있음
- 그래서 “어떤 정보를 담을지”와 “몇 바이트(범위)를 쓸지”를 명시해야 합니다.
정수 타입 (1, 2, 4, 8 byte)
아래는 “대표적인” 크기/범위입니다. (환경/컴파일러에 따라 long 같은 타입은 달라질 수 있음)
| 타입 | 크기(바이트) | Signed 범위(대략) |
|---|
char | 1 | (-128 ∼ 127) |
short | 2 | (-32,768 ∼ 32,767) |
int | 4 | 약 (-21억 ∼ 21억) |
long long | 8 | 약 (-9경 ∼ 9경) |
- 대부분은
int로 시작하면 됩니다. (성능/호환/가독성 면에서 무난)
- 더 큰 수가 필요하면
long long
- unsigned: 음수를 버리고 “양수 쪽 범위”를 2배로 넓힌 타입
- 예:
unsigned int는 대략 (0 ∼ 42억)
타입 선택 기준
- 어떤 정보를 담을 것인가?
- 정수(개수/레벨/HP), 문자(키 입력), 실수(좌표/시간) 등
- 어떤 범위가 필요한가? (최댓값/최솟값)
- HP는 0~수천이면
int로 충분
- 돈/경험치처럼 커질 수 있으면
long long 고려
- 기본은 크게 신경 쓰지 말고
int
- “메모리를 아끼려고 무조건 작은 타입”은 실전에서 오히려 실수/형변환 문제를 부를 수 있음
빠른 예시
- HP / 레벨 / 카운트:
int
- 경험치 누적 / 아주 큰 ID:
long long
- 음수가 절대 나오지 않는 값(인덱스/개수 등):
unsigned도 가능하지만, 초반엔 int로 통일해도 충분
체크 질문 (스스로 답해보기)
- 타입은 “0과 1”을 무엇과 무엇으로 결정해줄까? (2가지)
unsigned를 쓰면 범위가 왜 넓어질까?
- “대부분은
int부터”가 초보에게 안전한 이유는 뭘까?