Ich machte einen Spielautomaten, der so lange loopt, bis alle drei std::string
s den gleichen Wert haben. Ich bin verwirrt, warum in diesem Code || operator
das gewünschte Ergebnis gibt und nicht && operator
.
Ihre Stoppbedingung sollte lauten:
%Vor% In Bool-Algebra ist !(slotB == slotC && slotB == slotA)
gleich slotB != slotC || slotB != slotA
Diese Regel heißt De Morgan Law
(slotB != slotC || slotB != slotA)
Ist der gute Weg, um Ihre Arbeit zu tun.
Ein kleines Beispiel, wenn Sie:
verwenden %Vor%usuming:
%Vor%so:
%Vor%Die while-Schleife endet mit einer schlechten Schätzung.
In Ihrem Fall ist es vielleicht einfacher, die Bedingung für eine gute Vermutung zu schreiben und Nimm das Negative, wie Humam Helfawi sagt:
%Vor%Ich denke, es gibt die Möglichkeit, dass zwei Saiten gleich sind und die dritte eine andere, die Sie Loop-Bedingung scheitern lassen kann, wenn Sie & amp; & amp; (und) operator verwenden.
d. slotA
und slotB
könnten mir gleich sein, was slotA != slotB
zu einer falschen Aussage macht und aus der Schleife herauskommt. Wenn Sie jedoch ||
condition verwenden, ist slotC != slotB
true und setzt die Schleife fort.
Hinweis: Dies ist eine der Möglichkeiten, aber möglicherweise nicht der eigentliche Grund.