Mehrere ODER-oder UND-Bedingungen in der IF-Anweisung

Ich habe eine basic Frage bezüglich IF-Anweisung.
Lassen Sie uns sagen, ich will match-string-SONNE mit einem Zeichen-array(Größe 3).

if(arr[0]!='S' || arr[1]!='U' || arr[2]!='N')

cout << "no";

else

cout<< "yes";

Sind alle Bedingungen überprüft, in der If-Anweisung, oder muss er true zurückgeben, auf den ersten mismatch?

Wenn alle Voraussetzungen geprüft sind, wird die Reihenfolge der Prüfung werden von rechts nach Links?

  • Sind Sie mit c oder c++?
  • Beachten Sie, dass es nicht wirklich ein c-Stil-string (ohne null-Terminierung)
  • Dieses wird von C++ nicht C. Sie Bearbeitet die post, um dieses Problem zu beheben.
  • C und C++ nicht "bewerten" irgendeine bestimmte Richtung, Sie Kurzschluss in Fällen wie diesem.
  • das ist c++, die Bedingungen werden überprüft, bis die ersten Ausfall der Bedingung, und dann wird es fallen. (I. E. es Kurzschlüsse auf der ersten Bewertung, fällt aus)
  • Sie tun bewerten in einem bestimmten, besonderen Richtung, von Links nach rechts. Und es gibt einen sequence point in zwischen jeder Bewertung. Der compiler kann stoppen die weitere Auswertung des||, sobald es festgestellt hat ein operand den Wert true ergibt.
  • Eine Kette von || und && ausgewertet wird von Links nach rechts. Wenn das Ergebnis bestätigt werden kann, bevor Sie erreichen das Ende des Ausdrucks Kette, die Berechnung vorzeitig beendet.
  • Vielleicht sollte ich noch klären: "Bewerten" hat starke Auswirkungen, zumindest für mich, von interpretierten Sprachen. Binärdateien werden nicht "bewertet" at runtime. Und das, was Sie gerade beschrieben habe, ist das, was ich gerade verlinkt.
  • Sollten Sie diese Artikel, es ist ziemlich genial erklärt 😉 stackoverflow.com/q/23940505/2003898
  • Evaluation in diesem Kontext, bezieht sich auf die Reihenfolge der Auswertung (von Operanden zu einem bestimmten operator), das ist ein formaler Begriff, der in der C-und C++ - standards.
  • Hoffen wir also, " dazu führen, dass der code sieht ein wenig suspekt. Ich kann Bearbeiten und einzustellen, die kommentieren, wenn Sie möchten.

InformationsquelleAutor user3663688 | 2014-06-23
Schreibe einen Kommentar