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

Lorsque vous rencontrez un (bool1 && bool2), c ++ tente-t-il de vérifier bool2 si bool1 a été trouvé faux ou l’ignore-t-il comme PHP?

Désolé si c’est trop basique sur une question, mais je ne pouvais vraiment pas trouver une mention de cela ni dans Schildt ni sur Internet.

Oui, l’opérateur && en C ++ utilise l’ évaluation des courts-circuits, de sorte que si bool1 false cela ne dérange pas d’évaluer bool2 .

“Evaluation des courts-circuits” est le terme que vous souhaitez utiliser pour Google et que vous recherchez dans les index.

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

Ceci est utile si bool2 est en fait une fonction qui retourne bool ou utilise un pointeur:

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

sans logique de court-circuit, il tomberait en cas de déréférencement d’un pointeur NULL, mais avec la logique de court-circuit, cela fonctionne correctement.

C’est correct (comportement à court terme). Mais attention: le court-circuit s’arrête si l’opérateur appelé n’est pas l’opérateur intégré, mais un operator&& défini par l’utilisateur operator&& (identique à l’ operator|| ).

Référence dans ce SO

Les courts-circuits de l’opérateur && en C ++ – si bool1 était faux dans votre exemple, bool2 ne serait pas vérifié / exécuté.

C’est ce qu’on appelle l’évaluation de court-circuit (Wikipedia)

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

L’évaluation des courts-circuits désigne la sémantique de certains opérateurs booléens dans certains langages de programmation dans lesquels le second argument n’est exécuté ou évalué que si le premier argument ne suffit pas à déterminer la valeur de l’expression: par exemple, lorsque le premier argument de AND la fonction est fausse, la valeur globale doit être fausse; et lorsque le premier argument de la fonction OR est évalué à true, la valeur globale doit être vraie.

En C ++, à la fois && et || les opérateurs utilisent une évaluation de court-circuit.

Vous faites référence à une évaluation de court-circuit . Je pensais que cela pourrait être spécifique au compilateur, mais cet article auquel je suis lié le montre comme spécifique au langage, et C ++ adhère. Si c’est bien spécifique au compilateur, je ne peux pas imaginer un compilateur qui ne le suivrait pas. Le compilateur au jour le jour que j’utilise actuellement, VS 2008, le fait. Fondamentalement, il suivra la priorité de l’opérateur, et dès que le résultat de la condition est garanti,