Written by
LSM
on
on
TIL:단락회로평가
단락회로평가
- 모든 연산자와 피연산자를 계산하지 않고 식의 결과가 결정되는 것
- true or x => 앞이 참이기 때문에 뒷부분의 식을 계산할 필요 없음
- false and x => 앞 부분이 false이기 때문에 뒤의 식 계산이 불필요
- 식의 나머지 부분을 계산하지 않아도 회로가 중단되는 것을 단락회로평가라 함
예시
a >= 10 && a <= 20
- a의 값이 10보다 작으면 앞의 논리식이 false가 되기 때문에 뒤의 식은 검사를 하지 않음
- a의 값이 10 이상일 경우 논리식이 true가 되어 뒤의 식을 검사를 하게됨
단락회로평가가 지원되지 않을 때
int list[5];
int index = 0;
while(index <= 4 && list[index] != 0){
index = index + 1;
}
- index = 5이여도 단락회로평가가 없으니 뒤의 논리식을 검사하게 됨
- 배열의 인덱스를 접근하게 되는데 index = 5 이기 때문에 배열 접근 범위(0 ~ 4)를 벗어나게 됨