En utilisant des opérateurs au niveau du bit pour les Booléens en C++

Est-il une raison de ne pas utiliser les opérateurs au niveau du bit &, | et ^ pour "bool" valeurs en C++?

J'ai parfois dans des situations où je veux exactement l'une des deux conditions pour être vrai (XOR), donc je viens de lancer le ^ opérateur dans une expression conditionnelle. J'ai aussi parfois besoin de toutes les pièces d'une condition à évaluer si le résultat est vrai ou pas (plutôt que de court-circuit), j'ai donc utiliser & et |. J'ai aussi besoin d'accumuler des valeurs Booléennes parfois, et &= et |= peut être très utile.

J'ai eu un peu soulevé les sourcils quand le faire, mais le code est toujours significatif et plus propre qu'il en serait autrement. Est-il une raison de ne PAS les utiliser pour booléens? Sont là tout les compilateurs modernes qui donnent de mauvais résultats pour cette?

  • Si vous avez appris suffisamment bien le C++ depuis posant cette question, vous devez revenir et de l'onu-d'accepter la réponse actuelle et accepter Patrick Johnmeyer de réponse pour en expliquant correctement le court-circuit de la différence.
  • Remarque générale parce que les gens en question si c'est une bonne idée. Si vous vous souciez de la direction générale de la couverture des tests unitaires, puis la réduction des branches est souhaitable. Les opérateurs sur les bits sont utiles pour cela.
InformationsquelleAutor Jay Conrod | 2008-08-23