and, && (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Liste alphabétique des mots clés - Index


Category

Représentations alternatives de tokens (C++), Opérateurs (C++)

Syntaxe

Description

L'opérateur and est une représentation alternative de l'opérateur && (AND logique ou binaire).

i les deux opérandes ont la valeur true, le résultat a la valeur true. Sinon, le résultat a la valeur false. Les deux opérandes sont implicitement convertis en bool et le type du résultat est bool.

A l'inverse de l'opérateur & (AND bit-à-bit), l'opérateur && garantit une évaluation gauche-à-droite des opérandes. Si l'opérande gauche est évalué à 0 (ou false), l'opérande droite n'est pas évalué.

Les opérateurs and et && sont des opérateurs court-circuits (c'est-à-dire que le second opérande n'est pas évalué si le premier est évalué à false). Ainsi, c'est à la fois correct et fiable de tester un pointeur null, comme dans l'exemple suivant :

Afin d'utiliser l'opérateur and, vous devez activer l'option Activer les nouveaux noms d'opérateur (le commutateur -Vn du compilateur, disponible sur la page Compatibilité de la boîte de dialogue Projet > Options).

Exemple de and

bool test( int * p ) {
  return (p != 0) and (*p > 5);
}

Substituer && à and est également valide.

Surcharger && ou and

Vous pouvez surcharger l'opérateur && ainsi que la représentation alternative, and. N'oubliez pas que, quand l'opérateur est surchargé, la logique n'est pas court-circuitée, et que le test du pointeur vide n'est pas fiable. Voici un exemple illustrant comment surcharger and :

struct example {   bool operator and ( const example & ) {return true;}// same as operator &&}

Utilisation de && dans les références rvalue

En tant que partie du nouveau standard C++11, C++Builder prend en charge maintenant les références rvalue. En référence rvalue est formée en plaçant un && (mais pas un and) après un type dans une déclaration, comme suit :

Apt a;
Apt&& a_ref1 = a;

Une différence majeure entre la référence lvalue familière et la nouvelle référence rvalue est que les références rvalue peuvent être liées à un temporaire (c'est-à-dire un rvalue), mais une référence lvalue (au moins une qui n'est pas un const) ne peut pas être liée à un rvalue.

Voir aussi