Opérateur AND logique : &&

Syntaxe

logical-and-expression:
equality-expression
logical-and-expression && equality-expression

Notes

L’opérateur AND logique (&&) retourne true si les deux opérandes sont true et retournent false sinon. Les opérandes sont implicitement convertis en type bool avant l’évaluation, et le résultat est de type bool. L'opérateur logique présente une associativité de gauche à droite.

Les opérandes de l’opérateur AND logique n’ont pas besoin d’avoir le même type, mais ils doivent avoir un type booléen, intégral ou pointeur. Les opérandes sont souvent des expressions relationnelles ou d’égalité.

Le premier opérande est entièrement évalué et tous les effets secondaires sont terminés avant l’évaluation de l’expression AND logique continue.

Le deuxième opérande est évalué uniquement si le premier opérande prend true la valeur (différent de zéro). Cette évaluation élimine l’évaluation inutile du deuxième opérande lorsque l’expression AND logique est false. Vous pouvez utiliser cette évaluation de court-circuit pour empêcher le déréférencement du pointeur NULL, comme indiqué dans l'exemple suivant :

char *pch = 0;
// ...
(pch) && (*pch = 'a');

Si pch est null (0), le côté droit de l'expression n'est jamais évalué. Cette évaluation de court-circuit rend l’affectation impossible par le biais d’un pointeur Null.

Mot clé d’opérateur pour&&

C++ spécifie and comme autre orthographe pour &&. En C, l’orthographe alternative est fournie en tant que macro dans l’en-tête <iso646.h> . En C++, l’orthographe alternative est une mot clé ; l’utilisation de <iso646.h> ou ciso646> équivalent <C++ est déconseillée. Dans Microsoft C++, l’option ou /Za le /permissive- compilateur est nécessaire pour activer l’orthographe alternative.

Exemple

// expre_Logical_AND_Operator.cpp
// compile with: /EHsc
// Demonstrate logical AND
#include <iostream>

using namespace std;

int main() {
   int a = 5, b = 10, c = 15;
   cout  << boolalpha
         << "The true expression "
         << "a < b && b < c yields "
         << (a < b && b < c) << endl
         << "The false expression "
         << "a > b && b < c yields "
         << (a > b && b < c) << endl;
}

Voir aussi

Opérateurs intégrés C++, priorité et associativité
Opérateurs logiques C