logo

Operatori logici C

Gli operatori logici in C vengono utilizzati per combinare più condizioni/vincoli. Gli operatori logici restituiscono 0 o 1, a seconda che il risultato dell'espressione sia vero o falso. Nella programmazione C per il processo decisionale, utilizziamo operatori logici.

Nel linguaggio C abbiamo 3 operatori logici:

    AND logico ( && ) OR logico ( || ) NOT logico ( ! )

Tipi di operatori logici

1. Operatore logico AND ( && )

Se entrambi gli operandi sono diversi da zero la condizione diventa vera. Altrimenti, il risultato ha un valore pari a 0. Il tipo restituito del risultato è int. Di seguito è riportata la tabella della verità per l'operatore logico AND.



X

E X&& Y

1

1

1

1

0

0

0

1

0

0

0

0

Sintassi

(operand_1 && operand_2)>

Esempio

C




// C program for Logical> // AND Operator> #include> // Driver code> int> main()> {> >int> a = 10, b = 20;> >if> (a>0 && b> 0) {> >printf>(>'Both values are greater than 0 '>);> >}> >else> {> >printf>(>'Both values are less than 0 '>);> >}> >return> 0;> }>

>

>

Produzione

Both values are greater than 0>

2. Operatore logico OR ( || )

La condizione diventa vera se una qualsiasi di esse è diversa da zero. Altrimenti, restituisce false, ovvero 0 come valore. Di seguito è riportata la tabella della verità per l'operatore logico OR.

X E X || E

1

1

1

1

0

1

0

1

1

0

0

0

Sintassi

(operand_1 || operand_2)>

Esempio

C




// C program for Logical> // OR Operator> #include> // Driver code> int> main()> {> >int> a = -1, b = 20;> >if> (a>0 || b> 0) {> >printf>(>'Any one of the given value is '> >'greater than 0 '>);> >}> >else> {> >printf>(>'Both values are less than 0 '>);> >}> >return> 0;> }>

>

>

Produzione

Any one of the given value is greater than 0>

3. Operatore NOT logico ( !)

Se la condizione è vera allora l'operatore logico NOT la renderà falsa e viceversa. Di seguito è riportata la tabella della verità per l'operatore logico NOT.

X !X

0

1

1

0

Sintassi

 ! (operand_1 && operand_2)>

Esempio

C




// C program for Logical> // NOT Operator> #include> // Driver code> int> main()> {> >int> a = 10, b = 20;> >if> (!(a>0 && b> 0)) {> >// condition returned true but> >// logical NOT operator changed> >// it to false> >printf>(>'Both values are greater than 0 '>);> >}> >else> {> >printf>(>'Both values are less than 0 '>);> >}> >return> 0;> }>

>

>

Operatori logici di cortocircuito

Quando il risultato può essere determinato valutando l'espressione logica precedente senza valutare gli ulteriori operandi, si parla di cortocircuito.

Il cortocircuito può essere visto nell'equazione che ha più di un operatore logico. Possono essere AND, OR o entrambi.

1. Cortocircuito nell'operatore logico AND

L'operatore logico AND restituisce vero se e solo se tutti gli operandi restituiscono vero. Se il primo operando è falso, gli altri operandi non verranno valutati. Questo perché anche se gli ulteriori operandi restituiscono true, l'intera condizione restituirà comunque false.

Esempio

C++




// C++ Program to illustrate short circuiting in Logical AND> #include> using> namespace> std;> // utility function to check positive> bool> is_positive(>int> number)> {> >if> (number>0)> >return> true>;> >else> >return> false>;> }> // utility function to check if the number is even> bool> is_even(>int> number)> {> >if> (number % 2 == 0)> >return> true>;> >else> >return> false>;> }> // driver code> int> main()> {> >int> x = 10;> >// Both conditions are evaluated> >if> (is_positive(x) && is_even(x)) {> >cout <<>'Both conditions are satisfied.'> << endl;> >}> >else> {> >cout <<>'Conditions not satisfied.'> << endl;> >}> >int> y = -5;> >// The first condition is evaluated and found to be> >// false, so the second condition is not evaluated> >if> (is_positive(y) && is_even(y)) {> >cout <<>'Both conditions are satisfied.'> << endl;> >}> >else> {> >cout <<>'Conditions not satisfied.'> << endl;> >}> >return> 0;> }>

>

>

Produzione

Both conditions are satisfied. Conditions not satisfied.>

2. Cortocircuito nell'operatore logico OR

L'operatore OR restituisce vero se almeno un operando restituisce vero. Se il primo operando è vero, gli altri operandi non verranno valutati. Questo perché anche se gli ulteriori operandi restituiscono false, l'intera condizione restituirà comunque vera.

Esempio

C++




// C++ program to illustrate the short circuiting in Logical> // OR> #include> using> namespace> std;> // utility function to check positive number> bool> is_positive(>int> number)> {> >if> (number>0)> >return> true>;> >else> >return> false>;> }> // utility function to check if the number is even> bool> is_even(>int> number)> {> >if> (number % 2 == 0)> >return> true>;> >else> >return> false>;> }> // driver code> int> main()> {> >int> x = 8;> >// The first condition is evaluated and found to be> >// true, so the second condition is not evaluated> >if> (is_positive(x) || is_even(x)) {> >cout <<>'At least one condition is satisfied.'> ><< endl;> >}> >else> {> >cout <<>'Conditions not satisfied.'> << endl;> >}> >int> y = -5;> >// The first condition is evaluated and found to be> >// false, so the second condition is evaluated> >if> (is_positive(y) || is_even(y)) {> >cout <<>'At least one condition is satisfied.'> ><< endl;> >}> >else> {> >cout <<>'Conditions not satisfied.'> << endl;> >}> >return> 0;> }>

>

>

Produzione

At least one condition is satisfied. Conditions not satisfied.>

Domande frequenti sugli operatori logici

Q1. Qual è la precedenza degli operatori logici nella programmazione?

Risposta:

La precedenza degli operatori logici è: NOT, AND, OR. Si consiglia comunque sempre di utilizzare le parentesi per rendere esplicito l'ordine di valutazione ed evitare confusione.

Q2. Gli operatori logici possono essere concatenati insieme?

Risposta:

Sì, gli operatori logici possono essere concatenati insieme per creare condizioni complesse. Ad esempio, possiamo combinare più operatori logici AND (&&) o OR logico (||) in un'unica espressione per valutare più condizioni contemporaneamente.

Q3. Quale sarà l'output del seguente codice?

C




differenza tra amore e simpatia
#include> void> main()> > >int> a = 1, b = 0, c = 5;> >int> d = a && b>

>

>

Risposta:

6>

Q4. Quale sarà l'output del seguente codice?

C




#include> int> main()> {> >int> i = 1;> >if> (i++ && (i == 1))> >printf>(>'techcodeview.com '>);> >else> >printf>(>'Coding '>);> }>

>

>

Risposta:

Coding>