Gibt der Standard die Bewertungsreihenfolge dieses Ausdrucks an? if( functionA() && functionB() && functionC()) cout<<"Hello world";
zahl1) || (! zahl2)) printf("Error: Einer der Werte ist gleich 0!!! \n"); printf("%d/%d =%f \n", zahl1, zahl2, (float)zahl1/zahl2); return 0;} Die if -Konstruktion des Programms sieht so aus: In Worten ausgedrückt, sähe das etwa folgendermaßen aus: Ist der Wert zahl1 gleich 0 ODER der Wert zahl2 gleich 0, dann ist die Bedingung wahr, und Sie haben eine 0 eingegeben. Sollte die erste Bedingung (! zahl1) schon wahr sein, so wird die zweite Bedingung (! zahl2) gar nicht mehr überprüft: Dies können Sie auch am Programmablaufplan erkennen. Analog verhält es sich mit dem logischen UND-Operator ( &&). Das Ergebnis dieser verknüpften Operanden gibt nur dann »wahr« zurück, wenn alle Operanden wahr sind. Rheinwerk Computing :: C von A bis Z – 8.5 Logisches UND (&&) – logisches ODER (|| (Operator)||). Den Programmablaufplan des logischen UND-Operators sehen Sie in Abbildung 8. 7. Abbildung 8. 7 Programmablaufplan des logischen UND-Operators Wiederum folgt zur Verdeutlichung ein Programmbeispiel: /* logic_and. c */ int zahl; printf("Geben Sie einen Wert zwischen 10 und 20 ein: "); scanf("%d", &zahl); if( (zahl >= 10) && (zahl <= 20)) printf("Danke für die Eingabe!
In einer Programmiersprache kann das sehr wohl der Fall sein, wenn z. B. innerhalb des logischen Ausdrucks Funktionen mit Nebeneffekten aufgerufen werden. In diesem Fall spielt die Auswertungsreihenfolge eine Rolle, d. h. das Gesetz der Kommutativität (z. B. für die Konjunktion: a ∧ b = b ∧ a) gilt dann nicht, wenn a oder b nicht nur einen Wert, sondern auch eine Wirkung haben. Aus diesem Grund definieren die meisten Programmiersprachen eine feste Auswertungsreihenfolge für logische Ausdrücke. Wenn man eine Konjunktion a ∧ b von links nach rechts auswertet und dabei feststellt, dass schon a falsch ist, weiß man bereits an dieser Stelle und ohne b näher betrachten zu müssen, dass die ganze Konjunktion falsch sein wird. Dieses Wissen kann man zur Optimierung der Laufzeit benutzen, indem man in diesem Fall gänzlich auf die Auswertung von b verzichtet ( Lazy Evaluation) – allerdings um den Preis, dass dann ein eventueller Effekt von b ausbleibt. Logische Operatoren | C-HowTo. Aus diesem Grund ist die unkritische Ausdrucksoptimierung ein Problem.
Die Operanden sind im Allgemeinen relationale oder Gleichheitsausdrücke. Der erste Operand wird vollständig ausgewertet, und alle Nebenwirkungen werden abgeschlossen, bevor die Auswertung des logischen AND-Ausdrucks fortgesetzt wird. Der zweite Operand wird nur ausgewertet, wenn der erste Operand (nonzero) ausgewertet true wird. Diese Auswertung beseitigt die unnötige Auswertung des zweiten Operanden, wenn der logische AND-Ausdruck ist false. Mithilfe dieser Kurzschlussauswertung können Sie Dereferenzierungen durch NULL-Zeiger verhindern, wie im folgenden Beispiel gezeigt:
char *pch = 0;
//...
(pch) && (*pch = 'a');
Wenn pch null (0) ist, wird die rechte Seite des Ausdrucks niemals ausgewertet. Diese Kurzschlussauswertung macht die Zuordnung durch einen Nullzeiger unmöglich. Operatorschlüsselwort für &&
C++ gibt and als alternative Schreibweise für &&. In C wird die alternative Rechtschreibung als Makro im C++ Logisches Und Die
Operator für logisches ODER: | Microsoft Docs
Weiter zum Hauptinhalt
Dieser Browser wird nicht mehr unterstützt. Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen. Artikel
05/02/2022
2 Minuten Lesedauer
Ist diese Seite hilfreich? Haben Sie weiteres Feedback für uns? Feedback wird an Microsoft gesendet: Wenn Sie auf die Sendeschaltfläche klicken, wird Ihr Feedback verwendet, um Microsoft-Produkte und -Dienste zu verbessern. C++ logisches und diskografie. Datenschutzrichtlinie
Vielen Dank. In diesem Artikel
Syntax
Wahrheits- oder Ausdruck || Wahrheits- und Ausdruck
Hinweise
Der logische OR-Operator ( ||) gibt den booleschen Wert true zurück, wenn entweder oder beide Operanden vorhanden sind true und andernfalls zurückgegeben werden false. Die Operanden werden implizit vor der Auswertung in den Typ bool konvertiert, und das Ergebnis ist vom Typ bool. Das logische OR weist eine Assoziativität von links nach rechts auf. Die Operanden für den logischen OR-Operator müssen nicht denselben Typ haben, aber sie müssen boolescher, integraler oder Zeigertyp sein.
Lesezeit: 10 Minuten RAC
Gibt es so etwas? Es ist das erste Mal, dass ich auf einen praktischen Bedarf dafür stoße, aber ich sehe keinen aufgelisteten in Ströstrup. Ich beabsichtige zu schreiben:
// Detect when exactly one of A, B is equal to five. return (A==5) ^^ (B==5);
Aber es gibt keinen ^^ Operator. Kann ich die bitweise verwenden ^ hier und erhalten Sie die richtige Antwort (unabhängig von der maschinellen Darstellung von wahr und falsch)? Ich mische nie & und &&, oder | und ||, also zögere ich, das mit zu tun ^ und ^^. Ich würde mich wohler fühlen, wenn ich selbst schreibe bool XOR(bool, bool) funktionieren stattdessen. Der! = Betreiber dient diesem Zweck für bool Werte. LiraNuna
Für eine echte logische XOR-Operation funktioniert dies:
if(! C++ logisches oder. A! =! B) {
// code here}
Beachten Sie das! sind da, um die Werte in boolesche Werte umzuwandeln und zu negieren, sodass zwei ungleiche positive Ganzzahlen (jeweils a true) auswerten würde false. Ameise
Richtiges Handbuch logisch Die XOR-Implementierung hängt davon ab, wie genau Sie das allgemeine Verhalten anderer logischer Operatoren nachahmen möchten ( || und &&) mit Ihrem XOR.