C언어

[C언어] 단락 평가

_minit 2024. 10. 22. 08:27

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