Operatori logici CC Logical Operators

Gli operatori logici eseguono operazioni AND logico (&&) e OR logico (||).The logical operators perform logical-AND (&&) and logical-OR ( || ) operations.

SintassiSyntax

logical-AND-expression:logical-AND-expression:
inclusive-OR-expressioninclusive-OR-expression

logical-AND-expression && inclusive-OR-expressionlogical-AND-expression && inclusive-OR-expression

logical-OR-expression:logical-OR-expression:
logical-AND-expressionlogical-AND-expression

logical-OR-expression || logical-AND-expressionlogical-OR-expression || logical-AND-expression

Gli operatori logici non eseguono le conversioni aritmetiche comuni.Logical operators do not perform the usual arithmetic conversions. Al contrario, tali operatori valutano ogni operando in termini di equivalenza con 0.Instead, they evaluate each operand in terms of its equivalence to 0. Il risultato di un'operazione logica può essere 0 o 1.The result of a logical operation is either 0 or 1. Il tipo del risultato è int.The result's type is int.

Gli operatori logici C sono descritti di seguito:The C logical operators are described below:

OperatoreOperator DescrizioneDescription
&& L'operatore AND logico produce il valore 1 se entrambi gli operandi hanno valori diversi da zero.The logical-AND operator produces the value 1 if both operands have nonzero values. Se uno degli operandi è uguale a 0 il risultato è 0.If either operand is equal to 0, the result is 0. Se il primo operando di un'operazione AND logico è uguale a 0 il secondo operando non viene valutato.If the first operand of a logical-AND operation is equal to 0, the second operand is not evaluated.
|| L'operatore AND logico esegue un'operazione inclusive-OR sui propri operandi.The logical-OR operator performs an inclusive-OR operation on its operands. Se entrambi gli operandi hanno valore 0 il risultato è 0.The result is 0 if both operands have 0 values. Se uno degli operandi ha un valore diverso da zero il risultato è 1.If either operand has a nonzero value, the result is 1. Se il primo operando di un'operazione OR logico ha un valore diverso da 0 il secondo operando non viene valutato.If the first operand of a logical-OR operation has a nonzero value, the second operand is not evaluated.

Gli operandi delle espressioni AND logico e OR logico vengono valutati da sinistra a destra.The operands of logical-AND and logical-OR expressions are evaluated from left to right. Se il valore del primo operando è sufficiente per determinare il risultato dell'operazione, il secondo operando non viene valutato.If the value of the first operand is sufficient to determine the result of the operation, the second operand is not evaluated. Questa condizione viene denominata anche "valutazione short circuit".This is called "short-circuit evaluation." Dopo il primo operando è presente un punto di sequenza.There is a sequence point after the first operand. Per altre informazioni, vedere Punti di sequenza.See Sequence Points for more information.

EsempiExamples

Gli esempi seguenti visualizzano gli operatori logici:The following examples illustrate the logical operators:

int w, x, y, z;  

if ( x < y && y < z )  
    printf( "x is less than z\n" );  

In questo esempio la funzione printf viene chiamata per la stampa di un messaggio se x è minore di y e y è minore di z.In this example, the printf function is called to print a message if x is less than y and y is less than z. Se x è maggiore di y il secondo operando (y < z) non viene valutato e non viene eseguita nessuna operazione di stampa.If x is greater than y, the second operand (y < z) is not evaluated and nothing is printed. Si noti che ciò può causare problemi se il secondo operando ha effetti collaterali ai quali si fa riferimento per altri motivi.Note that this could cause problems in cases where the second operand has side effects that are being relied on for some other reason.

printf( "%d" , (x == w || x == y || x == z) );  

In questo esempio se x è uguale a w, y o z, il secondo argomento della funzione printf restituisce true e viene stampato il valore 1.In this example, if x is equal to either w, y, or z, the second argument to the printf function evaluates to true and the value 1 is printed. In caso contrario, restituisce false e il valore 0 viene formattato.Otherwise, it evaluates to false and the value 0 is printed. Appena una delle condizioni restituisce true, la restituzione viene interrotta.As soon as one of the conditions evaluates to true, evaluation ceases.

Vedere ancheSee Also

Operatore AND logico (&&) Logical AND Operator: &&
Operatore OR logico: ||Logical OR Operator: ||