2-1. 변수, 상수, 리터럴
This content is not available in your language yet.
LIQUID Philosophy EvaluationTotal Score: 7.6 / 10
프로그램이 데이터를 메모리에 저장하고 다루기 위한 기본 단위인 변수, 상수, 리터럴의 개념과 차이점을 정리한다.
변수 (Variable)
섹션 제목: “변수 (Variable)”데이터를 저장하기 위해 고유한 이름을 붙여 할당받은 메모리 공간.
변수의 생애주기 (Lifecycle)
섹션 제목: “변수의 생애주기 (Lifecycle)”- 선언 (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등
상수 (Constant)
섹션 제목: “상수 (Constant)”프로그램 실행 도중 값을 변경할 수 없도록 고정된 식별자.
- 의도치 않은 상태 변경을 원천 차단하여 코드의 안정성을 보장한다.
- 코드에 의미를 알 수 없는 숫자 대신 명확한 이름을 부여해 가독성을 높인다.
- 예)
86400대신SECONDS_IN_A_DAY라 정의하면 해당 값이 의미하는 바를 즉각 파악할 수 있다.
- 예)
- 여러 곳에서 사용되는 고정된 값을 한곳에서 일괄적으로 관리하여 유지보수성을 높인다.
상수의 두 가지 형태
섹션 제목: “상수의 두 가지 형태”컴파일러와 하드웨어 관점에서 상수는 생성 시점에 따라 본질이 나뉜다.
- 컴파일 타임 상수 (Compile-time Constant)
- 빌드 시점에 값이 확정되는 상수.
- 메모리 주소를 갖지 않고 코드 내에 직접 삽입한다.
- 런타임 상수 (Runtime Constant)
- 실행 중에 값이 결정된 후 고정되는 상수.
- 일반 변수처럼 공간을 할당받지만, 컴파일러가 쓰기 연산을 차단한다.
리터럴 (Literal)
섹션 제목: “리터럴 (Literal)”변수나 상수에 담기는 값 그 자체.
변수 및 상수와 리터럴의 차이
섹션 제목: “변수 및 상수와 리터럴의 차이”- 변수, 상수: 데이터를 담는 그릇(메모리 공간의 식별자).
- 리터럴: 그릇에 들어가는 내용물(순수한 값 자체).
주요 리터럴의 종류
섹션 제목: “주요 리터럴의 종류”- 정수 리터럴:
10,0xFF(16진수),0b1010(2진수) 등 - 부동소수점(실수) 리터럴:
3.14,1.0e-3(지수 표기) 등 - 문자 리터럴: 작은따옴표(
'')로 감싼 단일 문자. ('A','\n'등) - 문자열 리터럴: 큰따옴표(
"")로 감싼 문자들의 나열. ("Hello World"등) - 논리 리터럴:
true,false
AI Critical Synthesis
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.