c# Logical Operators?


22.10.2020, 22:08

bei && wird schon bei 2 gleichen Zahlen gewonnen

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wenn du in der while loop && benutzt, willst du, dass alle angegeben conditions true sind. Das heißt, dass es erst mit || funktioniert, da erst dann die condition als true gewertet wird. Beispiel: while(1==1 && 2==1) würde nicht durchlaufen werden, währenddessen while(1==1 || 2==1) schon durchlaufen werden würde.

Woher ich das weiß:Studium / Ausbildung

StrikeZz1721 
Fragesteller
 22.10.2020, 22:13

Achso jetzt habe ich es verstanden (denke ich :D). Also muss im while loop immer || stehen damit die conditions true sind. hat mich etwas verwirrt. Danke!

1

Also ich denke, es ist ein Knoten in deinem Kopf den du lösen musst, was nicht böse gemeint ist:

Übersetzte dir am Besten was du im Code schreibst:

while => so lange wie die Bedingung wahr ist

Die Verknüpfung von Bedingungen:

&& => Sowohl rechte als auch linke Seite müssen Wahr sein

|| => rechte oder linke Seite muss Wahr sein

! => Negation, also Umkehrung des Ergebnisses

Man arbeitet hier oft mit der sog. doppelten Verneinung ( also 2 mal Unwahr = Wahr oder umgekehrt )

( D1 != D2 || D2 != D3 || D1 != D3) == !(D1 == D2 && D2 == D3)

Wenn D1 ungleich D2 oder D2 ungleich D3 oder D1 ungleich D3

entspricht

Wenn NICHT D1 gleich D2 und D2 gleich D3 und somit logischer Weise D1 gleich D3

Wie du siehst ist es egal, welche der beiden Varianten du nutzt, das Ergebnis ist gleich. Es kommt im Grunde darauf an, was / wie du dir die Bedingungen besser vorstellen kannst.

Woher ich das weiß:Berufserfahrung – Senior-Softwaredeveloper mit 20 Jahren Berufserfahrung.

StrikeZz1721 
Fragesteller
 23.10.2020, 11:12

Ah okay also könnte ich dann statt:

"die01 != die02 || die03 != die02 || die01 != die03"

es so schreiben:

"die01 != die02 && die03 != die02 || die01 != die03" richtig?

da es dann ja zu "True || True || False" wird und beim logical or ja nur eine seite true sein muss oder?

0
WitchHunter0815  23.10.2020, 13:14
@StrikeZz1721

Nicht wirklich ...

die01 != die02 || die03 != die02 || die01 != die03

Bedeutet, wenn eine, egal welche Bedingung zutrifft, dann wird es Wahr

die01 != die02 && die03 != die02 || die01 != die03

Bedeutet Wenn Bedingung 1 und Bedingung 2 Wahr sind, oder Bedingung 3 dann wird es zu Wahr - wobei hier eine Klammer hilfreich wäre. && ist aber in der Wertigkeit höher und wird somit zuerst ausgewertet.

Bei || muss nur Ein Treffer da sein, dann wird es Wahr, Bei && müssen beide (mehrere) verkettete ALLE Wahr sein um Wahr zu ergeben.

0
StrikeZz1721 
Fragesteller
 23.10.2020, 14:56
@WitchHunter0815

Danke sehr ! ^^

Ich lerne gerade arrays/lists, ich möchte mir ein Buch holen für c#. ich schau mir mal die Operators nochmal an weil bis jetzt die mich nur etwas verwirrt haben ^^

0

Bei && müssen alle conditions true sein damit der loop nicht unterbrochen wird, bei || aber nur eine. Weil 3 mal überprüft wird ob die Zahlen ungleich sind reichen bei && also zwei gleiche Zahlen im ersten Vergleich damit es zwischen den Klammern insgesamt false wird und dice3 keinen Einfluss mehr darauf hat.

ganz einfach

du fragst ob noch irgendein paar nicht gleich ist , solange machste weiter .


StrikeZz1721 
Fragesteller
 22.10.2020, 22:11

Jetzt bin ich noch mehr verwirrt x_x :D

0