2012-05-24 2 views

답변

14

아니요, Java도 C++도 d을 평가하지 않습니다. 이것은 short-circuit evaluation입니다.

+4

물론 '연산자 &&'를 오버로드하지 않는 이상. 둘 다 평가됩니다. 이 얼마나 좋은, 간단한 언어;) – chris

3

아니요, 이진 논리 연산자는 단락되어 있습니다. 피 연산자를 왼쪽에서 오른쪽으로 평가합니다. 피연산자 중 하나가 표현식이 거짓이 될 것으로 평가하면 다른 피연산자는 평가되지 않습니다.

3

표준형 이진 연산 & & 및 || short-circuited입니다. 양측의 평가를 원하면 & 또는 | & & 대신에 ||. 예 :

public class StackOverflow { 

    static boolean false1() { 
     System.out.println("In false1"); 
     return false; 
    } 

    static boolean false2() { 
     System.out.println("In false2"); 
     return false; 
    } 

    public static void main(String[] args) { 
     System.out.println("shortcircuit"); 
     boolean b = false1() && false2(); 

     System.out.println("full evaluation"); 
     b = false1() & false2(); 
    } 
}