Une question surtout pour le plaisir et la curiosité: comment écrire un for
boucle en C++, qui itérer sur deux valeurs de a, bool
(c - true
et false
), en utilisant uniquement des opérations avec l' bool
(c'est à dire sans les conversions à d'autres types)?
L'arrière-plan, c'est que je voulais vérifier combien de solutions existe pour une équation comme (A && B) || (!B && !C && !D) == true
, et a commencé à écrire quelque chose comme for (bool A=false; ??? ; ++A) for (bool B=false; ...)
etc mais immédiatement coincé par ???
- c'est à dire ce qui serait la condition pour continuer la boucle? Bien sûr, je l'ai réécrit pour utiliser des int, et je sais aussi qu'un do ... while
boucle de travail, mais je suis curieux de savoir si il est toujours possible d'écrire un tel for
boucle? Et comme tout ne semble pas avoir une réponse, j'ai décidé de demander :)
Mise à jour: notez qu'une "évidence", variante for(bool A=false; !A; A=true)
proposé dans au moins deux maintenant-réponses supprimées ne fonctionnera qu'une seule itération, parce que pour le second, la condition d' !A
devient false
et la boucle se termine.
Après quelque réflexion, je crois qu'il est impossible de le faire en C++03, sans une seconde variable ou un pointeur de base de construction comme suggéré par Dietmar Kühl. La condition doit être testé à trois reprises d'exécution souhaitée, de sorte que deux valeurs d'un bool sont tout simplement pas assez. Et pour la boucle while fonctionne parce que la première itération est exécutée sans condition, la condition est vérifiée uniquement deux fois et donc une valeur booléenne peut être utilisé pour choisir entre la poursuite et la sortie.