c# Logical Operators?
Hey,
Die Idee ist dass 3 gleiche Zahlen gewürfelt werden müssen.
wieso funktioniert die Idee erst wenn beim while loop || als operator benutzt wird und nicht && ?
MFG
bei && wird schon bei 2 gleichen Zahlen gewonnen
4 Antworten
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.
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!
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.
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.
Und, falls es dir noch nicht aufgefallen ist, dein Würfel hat 7 Seiten.
Die hat soweit ich weiß 6 oder nicht? Weil noch nie eine 7 rauskam. In dem video hat er das selbe gemacht, aber nur mit einem würfel:
Ja, stimmt, nur das Minimum ist inklusive, das Maximum exklusive. Ich arbeite immer mit 0 als Startindex, das mag der Grund sein, warum ich das verwechselt habe.
Aber mit Videos lernen, nun ja, Ich lese lieber, solltest du evtl auch, dir einfach mal die Operatoren anshen https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/operators/ vielleicht bringt das Licht in deine grundlegenden Fragen.
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 ^^
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 .
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?