Short circuit evaluation

논리 연산자 &&, ||을 쓸 때 주의해야할 점

&&(and) 또는 ||(or) 논리 연산자는 다음과 같은 경우에 모든 명제를 보지 않아도 답을 알 수 있습니다.

( false && true )

&& 연산자는 모든 명제가 참이어야 참이기 때문에 하나라도 거짓이면 남은 명제를 볼 필요 없이 거짓입니다.

위의 예시에서는 왼쪽 명제가 거짓이기 때문에 오른쪽을 볼 필요 없이 거짓임을 알 수 있습니다.

따라서 && 연산자는 거짓 명제를 만나는 순간 남은 명제는 계산하지 않고 거짓을 리턴합니다.


( true || false )

|| 연산자는 하나라도 참이면 참이기 때문에 참인 명제를 만나는 순간 남은 명제는 볼 필요 없이 참입니다.

위의 예시에서는 왼쪽이 참이기 때문에 오른쪽 명제는 볼 필요 없이 참임을 알 수 있습니다.

따라서 || 연산자는 참인 명제를 만나는 순간 남은 명제는 계산하지 않고 참을 리턴합니다.


#include <stdio.h>
int main(){
   int a = 0, b = 5;
   if(a++ && b--); // 0 && 5 
   // -> a를 보고 false를 리턴하며 종료(a++ 실행O, b-- 실행X)
   printf("%d %d\n", a, b); // 1, 5
   if(a++ || b--); // 1 || 5
   // -> a를 보고 true를 리턴하며 종료(a++ 실행O, b-- 실행X)
   printf("%d %d\n", a, b); // 2, 5
}

© 2018. All rights reserved.

Powered by Hydejack v8.5.2