Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les opérateurs logiques effectuent des opérations logical-AND (&&) et logical-OR (||).
Syntaxe
logical-AND-expression :
inclusive-OR-expression
logical-AND-expression
&&
inclusive-OR-expression
logical-OR-expression :
logical-AND-expression
logical-OR-expression
||
logical-AND-expression
Remarques
Les opérateurs logiques n’effectuent pas les conversions arithmétiques habituelles. Au lieu de cela, ils évaluent chaque opérande en termes d’équivalence à 0. Le résultat d’une opération logique est 0 ou 1. Le type du résultat est int.
Les opérateurs logiques C sont décrits ci-dessous :
| Opérateur | Descriptif |
|---|---|
&& |
L’opérateur LOGICAL-AND produit la valeur 1 si les deux opérandes ont des valeurs différente de zéro. Si l’un des opérandes est égal à 0, le résultat est 0. Si le premier opérande d’une opération logique-AND est égal à 0, le deuxième opérande n’est pas évalué. |
|| |
L’opérateur logical-OR effectue une opération OR inclusive sur ses opérandes. Le résultat est 0 si les deux opérandes ont 0 valeurs. Si l’un des opérandes a une valeur différente de zéro, le résultat est 1. Si le premier opérande d’une opération logique-OR a une valeur différente de zéro, le deuxième opérande n’est pas évalué. |
Les opérandes d’expressions logique-AND et logical-OR sont évalués de gauche à droite. Si la valeur du premier opérande est suffisante pour déterminer le résultat de l’opération, le deuxième opérande n’est pas évalué. Cet effet est appelé évaluation « court-circuit ». Il existe un point de séquence après le premier opérande de l’expression. Pour plus d’informations, consultez Points de séquence.
Exemples
Les exemples suivants illustrent les opérateurs logiques :
int w, x, y, z;
if ( x < y && y < z )
printf( "x is less than z\n" );
Dans cet exemple, la printf fonction est appelée pour imprimer un message si x elle y est inférieure à et y est inférieure à z. S’il x est supérieur yà , le deuxième opérande (y < z) n’est pas évalué et rien n’est imprimé. Il s’agit d’un autre cas d’évaluation de court-circuit qui doit être pris en compte lors de l’écriture de comparaisons logiques. Sinon, cela peut entraîner des problèmes si le code s’appuie sur les effets secondaires de l’évaluation du deuxième opérande.
printf( "%d" , (x == w || x == y || x == z) );
Dans cet exemple, s’il x est égal à w, you z, le deuxième argument à la printf fonction prend la valeur true et la valeur 1 est imprimée. Sinon, elle prend la valeur false et la valeur 0 est imprimée. Dès que l’une des conditions prend la valeur true, l’évaluation cesse.