Je faisais une machine à sous qui boucle jusqu'à ce que les trois std :: string code> s ont la valeur
|| 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);
3 Réponses :
Votre condition d'arrêt doit être: Cependant, dans Bool-algèbre Cette règle s'appelle Law de Morgan < / a> p> p> ! (slotb == slotc && slotb == slota) code> est égal à
Slotb! = Slotc || Slotb! = slota code> p>
Merci beaucoup pour la solution et pour la règle :)
Il convient de noter que C et C ++ ne prennent pas en charge les arguments partagés aux opérateurs de comparaison, comme dans la notation mathématique. Par exemple. SLOTA == SLOTB == SLOTC CODE> compilera (éventuellement avec un avertissement), mais cédant un résultat incorrect car il est analysé comme
(slota == slotb) == Slotc code>. Cependant, Python soutient cette note. Il s'agit donc d'un gotcha pour les nouveaux programmeurs C ++ venant de Python.
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. P>
I.e. Remarque: Ceci est l'une des possibilités mais pourrait ne pas être la raison réelle. p> Slota CODE> et
SLOTB CODE> Pourriez-vous être égal à celui qui fait
slota! = slotb code> une fausse déclaration et il sortira de la boucle. Mais lorsque vous utilisez
|| code> conditionner le
slotc! = slotb code> est vrai et continue la boucle. P>
Un petit exemple si vous utilisez: p> (slotb! = slotc || slotb! = slota) code> est le bon moyen de faire votre travail.
while (!(slotB == slotC && slotB == slotA))