Tenir compte de ce code:peu de détails sur l'utilisation de l'opérateur « ou »
int a = 5;
if (a == 5 || a == 10)
doSomething();
Dans ce cas a
est 5 donc la première condition est vraie. Est-ce que le programme vérifiera si la deuxième condition est vraie ou il commencera à exécuter doSomething()
immédiatement après s'être assuré que a
est vraiment 5?
Non, il ne vérifie pas la deuxième condition - elle ira seulement aussi loin que possible dans les conditions nécessaires. S'il est évident que la valeur de vérité de la condition est, à mi-chemin, cela ne dérange pas avec l'autre reste de la condition. Copie possible de [Comment le C++ gère-t-il &&? (Évaluation de court-circuit)] (http://stackoverflow.com/questions/5211961/how-does-c-handle-short-circuit-evaluation): opérateur différent, même problème. Voir aussi: http://en.wikipedia.org/wiki/Short-circuit_evaluation – Piskvor
Vérifiez la sortie de l'assemblage, et vous le saurez. utilisez le -S pour le compilateur, certains peuvent être différents. – L7ColWinters
@Piskvor Pas tout à fait un doublon - celui-ci est étiqueté "C" plutôt que "C++" (même si dans le cas de l'opérateur || ils ont un comportement commun) – razlebe