[JAVA] 논리 연산에서의 단락회로 평가
논리 연산자를 사용한 연산에서 &&
는 두 항이 모두 참이여야지만 true이고, ||
는 하나의 항만 참이면 나머지 항이 참이든 거짓이든 상관없이 무조건 true가 된다.
그래서 자바에서 논리 곱 연산을 실행할 때 앞 항의 결과가 거짓이면 뒤 항은 살펴볼 필요가 없다고 여겨 실행이 되지 않는다. 논리 합 연산을 실행할 때도 마찬가지로 앞 항의 결과가 참이면 뒤 항은 살펴볼 필요가 없다고 여겨 실행이 되지 않는다. 다음 코드를 살펴보자
int i= 1;
int num =10;
boolean value = ((num=num+i) < 10) && ((i= i+2) <10);
//앞 항이 거짓이므로 뒷 항은 실행되지 않음
System.out.println(value); //false
System.out.println(num); // 11
System.out.println(i); //실행되지 않았으므로 그대로 1
value = ((num = num + 10) >10) || ((i=i+2) < 10);
//앞 항이 참이므로 뒷 항은 실행되지 않음
System.out.println(value); //true
System.out.println(num); // 21
System.out.println(i); //실행되지 않았으므로 그대로 1
이렇게 논리 곱 연산과 논리 합 연산시 뒤 항이 실행되지 않는 것을 단락 회로 평가(Short Circuit Evaluation:SCE)라고 한다.
Author And Source
이 문제에 관하여([JAVA] 논리 연산에서의 단락회로 평가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kekim20/JAVA-논리-연산에서의-단락회로-평가저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)