C언어 if문에 대해서 찾아보다가 if(조건문 1 && 조건문 2) 일 때 조건문 1이 참일 때 더 효율적으로 작동한다는 이야기를 들었다.
그래서 뭐지 하고 찾아보니 이것을 단락 평가(Short Circuit Evaluatin)라고 한다.
단락 평가란, 논리 연산에서 전체 조건이 이미 확실해지면 나머지 조건을 더 이상 평가하지 않는 최적화 기법이다.
이것의 핵심은 필요 최소한의 연산만 수행하는 것이다.
예시 코드
if (ptr != NULL && *ptr == value) {
// ptr이 NULL이 아닐 경우에만 *ptr이 평가됨
}
ptr이라면 두 번째 조건인 *ptr == value는 평가되지 않는다. 이렇게 함으로써 NULL 포인터 참조로 인한 런타임 오류를 방지할 수 있다. 특정 조건을 먼저 평가함으로써 이후 위험한 연산을 안전하게 처리할 수 있다.
하지만 단락 평가로 인해 특정 코드가 실행되지 않을 수 있음에 주의해야 한다.
728x90
'C언어' 카테고리의 다른 글
[C언어] unsigned int flags -1 에 대해서 (0) | 2024.10.23 |
---|---|
[C언어] 주석이란? (0) | 2024.10.22 |
[C언어] gets()의 결함 (0) | 2024.10.21 |
[C언어] 인라인(inline) 함수란? (0) | 2024.10.21 |
[C언어] 타입 한정자(type qualifiers)란? (0) | 2024.10.18 |