콘텐츠로 이동

2-1. 변수, 상수, 리터럴

LIQUID 철학 평가종합 점수: 7.6 / 10
L: 연계 지식 (7)I: 직관적 흐름 (8.5)Q: 질적 배움 (7.5)U: 명료한 설명 (8.5)I: 본질 탐구 (7.5)D: 심층 탐구 (6.5)

AI 비평 총평

The manuscript delivers a clear and logically organized conceptual breakdown, effectively highlighting low-level insights such as compiler symbol table registration and the distinction between compile-time and runtime constants. While the pedagogical structure is crisp and highly intuitive for introductory learners, it lacks a comprehensive deep dive into actual assembly-level memory layouts, stack versus heap allocation dynamics, and advanced type system interactions.

프로그램이 데이터를 메모리에 저장하고 다루기 위한 기본 단위인 변수, 상수, 리터럴의 개념과 차이점을 정리한다.


데이터를 저장하기 위해 고유한 이름을 붙여 할당받은 메모리 공간.

  • 선언 (Declaration)
    • 컴파일러의 심볼 테이블에 변수명, 자료형, 크기, 유효 범위를 등록하는 행위.
    • 변수가 저장될 메모리 위치를 계산할 뿐, 실제 물리 주소는 링커나 런타임 로더, 운영체제에 의해 확정된다.
  • 초기화 (Initialization)
    • 선언된 메모리 공간에 최초로 값을 저장하는 행위.
    • 변수를 초기화하지 않으면 이전 프로세스나 함수의 잔여 비트열이 임의로 저장되어 프로그램 오작동을 유발한다.
  • 할당 (Assignment)
    • 이미 존재하는 변수에 새로운 값을 덮어쓰는 행위.

식별자 명명 표기법 (Naming Convention)

섹션 제목: “식별자 명명 표기법 (Naming Convention)”

여러 단어를 조합해 변수나 함수의 이름을 지을 때 가독성을 높이기 위해 사용하는 표준 표기 규칙.

  • Camel Case: 첫 단어는 소문자, 이후 단어 첫 글자는 대문자로 작성.
    • 주로 C++, Java 등에서 변수명, 함수명에 사용.
    • 예) userName, totalCount
  • Snake Case: 모든 단어를 소문자로 쓰고 밑줄(_)로 연결.
    • 주로 Python 등에서 변수명, 함수명에 사용.
    • 예) user_name, total_count
  • Pascal Case: 모든 단어의 첫 글자를 대문자로 표기.
    • 대부분의 언어에서 클래스명, 인터페이스명에 사용.
    • 예) UserProfile, GameManager
  • Screaming Snake: 모든 단어를 대문자로 쓰고 밑줄(_)로 연결.
    • 대부분의 언어에서 상수명에 사용.
    • 예) PI, MAX_USERS

프로그램 실행 도중 값을 변경할 수 없도록 고정된 식별자.

  • 의도치 않은 상태 변경을 원천 차단하여 코드의 안정성을 보장한다.
  • 코드에 의미를 알 수 없는 숫자 대신 명확한 이름을 부여해 가독성을 높인다.
    • 예) 86400 대신 SECONDS_IN_A_DAY라 정의하면 해당 값이 의미하는 바를 즉각 파악할 수 있다.
  • 여러 곳에서 사용되는 고정된 값을 한곳에서 일괄적으로 관리하여 유지보수성을 높인다.

컴파일러와 하드웨어 관점에서 상수는 생성 시점에 따라 본질이 나뉜다.

  • 컴파일 타임 상수 (Compile-time Constant)
    • 빌드 시점에 값이 확정되는 상수.
    • 메모리 주소를 갖지 않고 코드 내에 직접 삽입한다.
  • 런타임 상수 (Runtime Constant)
    • 실행 중에 값이 결정된 후 고정되는 상수.
    • 일반 변수처럼 공간을 할당받지만, 컴파일러가 쓰기 연산을 차단한다.

변수나 상수에 담기는 값 그 자체.

  • 변수, 상수: 데이터를 담는 그릇(메모리 공간의 식별자).
  • 리터럴: 그릇에 들어가는 내용물(순수한 값 자체).
  • 정수 리터럴: 10, 0xFF (16진수), 0b1010 (2진수) 등
  • 부동소수점(실수) 리터럴: 3.14, 1.0e-3 (지수 표기) 등
  • 문자 리터럴: 작은따옴표('')로 감싼 단일 문자. ('A', '\n' 등)
  • 문자열 리터럴: 큰따옴표("")로 감싼 문자들의 나열. ("Hello World" 등)
  • 논리 리터럴: true, false