AD

Operatori logici in C

Nel linguaggio C gli operatori logici permettono di creare delle espressioni booleane composte da più espressioni logiche oppure per considerare la negazione di un’espressione. Questo è ottenuto introducendo diversi operatori logici, come l’operatore di prodotto logico o AND (&&), l’operatore di somma logica o OR (||) oppure l’operatore di negazione o NOT (!).

Nella seguente tabella vengono riportati i principali operatori logici del linguaggio C:

Simbolo

Significato

Utilizzo

&&

AND logico

a && b

||

OR logico

a || b

!

NOT logico

!a

Trattandosi di operatori che vengono utilizzati tipicamente all’interno di espressioni booleane, il loro utilizzo comporta la restituzione del valore 1 quando le espressioni sono verificate e 0 quando le espressioni sono false. In particolare, nel caso dell’operatore logico AND (&&) tutte le espressioni dovranno essere vere per ottenere 1 (cioè vero), mentre nel caso dell’operatore logico OR (||) basta che ci sia almeno un’espressione vera per ottenere 1.

Chiaramente, dato che gli operatori logici vengono tipicamente utilizzati all’interno di espressioni booleane, vengono impiegati insieme agli operatori di confronto.

Nota: tutti gli operatori logici vengono impiegati all’interno di istruzioni condizionali e iterative.

Esempio utilizzo operatori logici

Di seguito vengono riportati alcuni esempi di utilizzo degli operatori logici all’interno del linguaggio C.

Il seguente programma chiede all’utente di inserire due numeri e successivamente controlla, utilizzando gli operatori di confronto e gli operatori logici, se i due numeri risultano essere entrambi più grandi di 10 usando l’operatore logico AND, oppure se solo uno dei due risulta essere più grande usando l’operatore logico OR oppure se nessuno dei due casi precedenti è verificato, nessuno dei due numeri sarò maggiore di 10.

#include <stdio.h> int main(){ int num1, num2; printf("Inserisci due numeri: "); scanf("%d %d", &num1, &num2); if(num1>10 && num2>10){ printf("Hai inserito due numeri maggiori di 10!\n"); } else if(num1>10 || num2>10){ printf("Hai inserito almeno un numero maggiore di 10!\n"); } else { printf("Nessuno dei due numeri e' maggiore di 10!\n"); } return 0; }

Mentre, il seguente esempio utilizza l’operatore logico NOT (!) per gestire un ciclo while.

Inizialmente vengono inizializzate a 0 due variabili, la variabile “stato” viene usata per indicare se il programma si trova nello stato 0 (false) o nello stato 1 (true), mentre la variabile “cont” viene incrementata di 1 ad ogni iterazione del ciclo while fino a che non risulta essere maggiore o uguale a 10 e in tal caso alla variabile “stato” verrà assegnato il valore 1. Di conseguenza l’espressione del ciclo while non sarà più verificata, dunque termina la sua esecuzione, terminando anche il programma.

#include <stdio.h> int main(){ int stato = 0, cont = 0; while(!stato){ cont++; printf("%d ", cont); if(cont >= 10){ stato = 1; } } return 0; }