2014-10-14 6 views

ответ

2

Да. Он использует оценку короткого замыкания (представлен операторами && и ||). Ваше состояние

(c5) && (c4) && (c3) && (c2) 

, по существу, такой же, как

(A || B) && (C && D) && (E || F) && (G && H) 

, который так же, как

(A || B) && C && D && (E || F) && G && H 

так

  • если A будет оцениваться как true затем B не будут проверены.
  • , если A и B будет false, то все выражение будет равно

    false && C && D && (E || F) && G && H 
    

    который всегда false (потому что false && whatever всегда false), поэтому C && D && (E || F) && G && H не будет оцениваться

и так далее, и на ...

+0

спасибо! это ответ! –

0

Да.

(&& и || короткое замыкание, как описано на странице Википедии вы связаны)

1

Да, это делает оператор & & будет короткое замыкание оценки как только он находит ложное условие, и || будет делать то же самое, когда найдет истину.

& & и || операторы выполняют операции условного-И и условного-ИЛИ для двух булевых выражений. Эти операторы демонстрируют поведение «короткого замыкания», что означает, что второй операнд оценивается только в случае необходимости. source

В случае, если Вы хотели бы заставить программу, чтобы оценить все условия, вы должны использовать побитовое логические операторы: & и |

Например:

if ((c5) & (c4) & (c3) & (c2)){ 
    //execute operation 
} 

Предыдущий код будет оценивать все условия, даже если ложный найден (не короткое замыкание).

0

Это так, вы можете проверить Для этого вам понадобится код:

boolean foo = true || func(); 
boolean bar = false && func(); 

public boolean func() { 
    System.out.println("short circuit"); //not gonna see that line 
    return true; 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^