이번 Step에서 잡아야 할 것

  • 타입을 정하는 이유: 해석 방식(정수/문자/실수) + 크기(범위) 결정
  • Signed vs Unsigned: 음수 표현 여부가 범위를 바꾼다
  • 실전 기준: 대부분 int, 큰 수는 long long, 메모리 최적화는 “필요할 때만”

타입을 정하는 이유

  • 컴퓨터는 0과 1만 저장합니다.
  • 같은 0과 1이라도 타입에 따라 의미가 달라집니다.
    • 예: 01000001char로 보면 'A', int로 보면 숫자 65처럼 해석될 수 있음
  • 그래서 “어떤 정보를 담을지”와 “몇 바이트(범위)를 쓸지”를 명시해야 합니다.

정수 타입 (1, 2, 4, 8 byte)

아래는 “대표적인” 크기/범위입니다. (환경/컴파일러에 따라 long 같은 타입은 달라질 수 있음)

타입크기(바이트)Signed 범위(대략)
char1(-128 \sim 127)
short2(-32,768 \sim 32,767)
int4약 (-21억 \sim 21억)
long long8약 (-9경 \sim 9경)
  • 대부분은 int로 시작하면 됩니다. (성능/호환/가독성 면에서 무난)
  • 더 큰 수가 필요하면 long long
  • unsigned: 음수를 버리고 “양수 쪽 범위”를 2배로 넓힌 타입
    • 예: unsigned int는 대략 (0 \sim 42억)

타입 선택 기준

  1. 어떤 정보를 담을 것인가?
    • 정수(개수/레벨/HP), 문자(키 입력), 실수(좌표/시간) 등
  2. 어떤 범위가 필요한가? (최댓값/최솟값)
    • HP는 0~수천이면 int로 충분
    • 돈/경험치처럼 커질 수 있으면 long long 고려
  3. 기본은 크게 신경 쓰지 말고 int
    • “메모리를 아끼려고 무조건 작은 타입”은 실전에서 오히려 실수/형변환 문제를 부를 수 있음

빠른 예시

  • HP / 레벨 / 카운트: int
  • 경험치 누적 / 아주 큰 ID: long long
  • 음수가 절대 나오지 않는 값(인덱스/개수 등): unsigned도 가능하지만, 초반엔 int로 통일해도 충분

체크 질문 (스스로 답해보기)

  • 타입은 “0과 1”을 무엇과 무엇으로 결정해줄까? (2가지)
  • unsigned를 쓰면 범위가 왜 넓어질까?
  • “대부분은 int부터”가 초보에게 안전한 이유는 뭘까?

profile
李家네_공부방

0개의 댓글