7
votes

Nier l'expression contenant && opérateur

Je faisais une machine à sous qui boucle jusqu'à ce que les trois std :: string code> s ont la valeur la même valeur forte>. Je suis confus pourquoi dans ce code le || Opérateur code> donne le résultat souhaité plutôt que le && code>.

std::string slotA,slotB,slotC; 
do {
    //Fill slotA, slotB and slotC with some data
} while (slotB != slotC || slotB != slotA);


0 commentaires

3 Réponses :



2
votes

Je pense qu'il est possible que deux chaînes soient identiques et troisième différentes, ce qui pourrait vous faire échouer de boucle si vous utilisez && (et) opérateur.

I.e. Slota et SLOTB Pourriez-vous être égal à celui qui fait slota! = slotb une fausse déclaration et il sortira de la boucle. Mais lorsque vous utilisez || conditionner le slotc! = slotb est vrai et continue la boucle.

Remarque: Ceci est l'une des possibilités mais pourrait ne pas être la raison réelle.


0 commentaires

4
votes

(slotb! = slotc || slotb! = slota) code> est le bon moyen de faire votre travail.

Un petit exemple si vous utilisez: p>

 while (!(slotB == slotC && slotB == slotA))


0 commentaires