[Definite Assignment]
: 초기화되지 않은 변수들의 사용을 하지 못하게 하는 것 (컴파일러에 의해 정적으로 확인)
: JAVA와 C#에서, 지역변수들에게 definite assignment의 특성을 부여한다.
: 표현식에 대한 모든 가능한 흐름 경로들은 표현식에 있는 모든 변수들에게 값을 할당해야 한다.
: 옛날 방식(conservative)이라 항상 초기화되지 않은 변수 사용을 감지하지는 못한다.
# JAVA에서 Definite Assignment 예시
int i; // 초기화 안함
int j = 3;
...
if (j > 0) {
i = 2;
}
...
if (j > 0) {
System.out.println(i); // i 값 초기화 오류
}
: 흐름상 i값 들어간것 같지만, 컴파일러가 이를 감지하지 못해 초기화 오류 발생된다.
'[프로그래밍 언어론]' 카테고리의 다른 글
프로그래밍 언어론 6-1-4강. 표현식 내의 순서(Ordering within Expressions) (0) | 2019.11.18 |
---|---|
프로그래밍 언어론 6-1-3강(4). 생성자 초기화 (Constructors) (0) | 2019.11.15 |
프로그래밍 언어론 6-1-3강(2). 초기화 동적 확인(Dynamic Checks) (0) | 2019.11.15 |
프로그래밍 언어론 6-1-3강. 초기화(Initialization) (0) | 2019.11.15 |
프로그래밍 언어론 6-1-2강(4). Assignments(할당) - 할당 연산자의 조합 (0) | 2019.11.11 |