59 votes

Comment le C++ gère-t-il && ? (Évaluation de court-circuit)

Lorsqu'il rencontre un (bool1 && bool2), est-ce que c++ essaie jamais de vérifier bool2 si bool1 a été trouvé faux ou l'ignore-t-il comme le fait PHP ?

Désolé si c'est une question trop basique, mais je n'ai vraiment pas pu trouver de mention de cela ni dans Schildt ni sur Internet.

37voto

Tim Points 5541

C++ utilise une logique de court-circuit, donc si bool1 est faux, il n'aura pas besoin de vérifier bool2 .

C'est utile si bool2 est en fait une fonction qui renvoie bool, ou pour utiliser un pointeur :

 if ( pointer && pointer->someMethod() )

sans logique de court-circuit, il planterait lors du déréférencement d'un pointeur NULL, mais avec une logique de court-circuit, cela fonctionne bien.

19voto

Mat Points 104488

C'est correct (comportement en court-circuit). Mais attention : le court-circuit s'arrête si l'opérateur invoqué n'est pas l'opérateur intégré, mais un operator&& défini par l'utilisateur (idem avec operator|| ).

Référence dans cet OS

2voto

birryree Points 29165

Les courts-circuits de l'opérateur && bool1 était faux dans votre exemple, bool2 ne serait pas vérifié/exécuté.

1voto

trev Points 105

C'est ce qu'on appelle l'évaluation de court-circuit (Wikipédia)

L'opérateur && est un opérateur de court-circuit en C++ et il n'évaluera pas bool2 si bool1 est faux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X