Negiert den Ausdruck, der && operator enthält

7

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 .

%Vor%     
Borthamonth 15.11.2016, 11:47
quelle

3 Antworten

14

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

    
Humam Helfawi 15.11.2016, 11:52
quelle
4

(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%     
baddger964 15.11.2016 12:05
quelle
2

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.

    
Vignesh Murugan 15.11.2016 11:54
quelle

Tags und Links