3 Stimmen

Überprüfe alle Bedingungen in einer "if"-Anweisung?

Mögliche Duplikate:
Warum verwenden wir normalerweise || anstatt |, was ist der Unterschied?

Beispiel:

if(a && b && d)
{
...
}

Ich muss herausfinden, ob eine Sprache alle Bedingungen in der if-Anweisung überprüfen kann, auch wenn "b" fehlschlägt. Wie nennt man dieses Konzept?

14voto

Jon Skeet Punkte 1325502

Nein, weder Java noch C++ werden d auswerten. Dies ist Kurzschlussauswertung.

3voto

Chris Hayden Punkte 1084

Nein, die binären logischen Operatoren sind kurzgeschlossen. Sie bewerten ihre Operanden von links nach rechts. Wenn einer der Operanden so bewertet wird, dass der Ausdruck falsch ist, werden keine anderen Operanden bewertet.

3voto

user949300 Punkte 15114

Die standardmäßigen binären Operationen && und || werden kurzgeschlossen. Wenn Sie beide Seiten zwingen möchten, ausgewertet zu werden, verwenden Sie & oder | anstelle von && und ||. z.B.

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();
   }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X