Question:
Chaîne de, ou une grosse phrase si
Allan Nørgaard
2015-01-29 19:58:11 UTC
view on stackexchange narkive permalink

(Cela pourrait être plus une question C courante)

Je veux tester plusieurs conditions dans une phrase IF

  if (variable) {// le plus rapide check if (register) {// un peu plus lent if (read_peripheral) {// vérification très lente // [faire quelque chose]}}}  

Il semble évident que je veux commencer par la vérification la plus rapide, et passez ensuite aux plus lentes, évitant potentiellement de les vérifier si ce qui précède était faux.

Maintenant que je dois vérifier quelques conditions, j'aimerais savoir si ce qui suit est le même, ou si toutes les conditions seront évaluées avant de prendre une décision?

  if (variable && register && read_peripheral) {// [faire quelque chose]}  
Un répondre:
Peter Bloomfield
2015-01-29 21:32:46 UTC
view on stackexchange narkive permalink

Les mettre tous dans une seule condition comme celle-là est absolument parfait. C / C ++ utilise une "évaluation de court-circuit", ce qui signifie qu'il s'arrêtera dès qu'il aura déterminé le résultat. Si tout est combiné à l'aide d'opérateurs ET logiques (&&), cela signifie qu'il s'arrêtera dès que l'un d'eux sera évalué à faux.

Par exemple:

  if (blah () && foo ()) {...}  

Si blah () renvoie false, il n'appellera jamais foo () du tout car il sait déjà que le résultat global est faux.

L'inverse se produit avec l'opérateur logique OR (||):

  if (blah () || foo ()) {...}  

Si blah () renvoie true dans ce cas, il n'appellera pas foo () . C'est parce qu'il sait déjà que le résultat global est vrai.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...