05. Operatori logici

Gli operatori logici corrispondono ai connettivi logici AND (congiunzione), OR (disgiunzione) e NOT (negazione).

Nel linguaggio C gli operatori logici hanno la seguente sintassi:

    • && (corrisponde al connettivo logico AND)

    • || (corrisponde al connettivo logico OR)

    • ! (corrisponde al connettivo logico NOT)

Operatore && (AND)


#include <stdio.h>

int main()

{

int x,y;

x=5;

y=3;

// primo IF - la condizione è verificata

if (x>3 && y>2){

printf("Primo IF: La condizione e' verificata\n");

}

else{

printf("Primo IF: La condizione NON e' verificata\n");

}

// secondo IF - la condizione NON è verificata

if (x>6 && y>2){

printf("Secondo IF: La condizione e' verificata\n");

}

else{

printf("Secondo IF: La condizione NON e' verificata\n");

}

// terzo IF - la condizione NON è verificata

if (x==4 && y==2){

printf("Terzo IF: La condizione e' verificata\n");

}

else{

printf("terzo IF: La condizione NON e' verificata\n");

}

return 0;

}

if (x>3 && y>2)

La condizione all'interno dell'if è verificata perché contemporaneamente sono verificati i due confronti. Infatti:

    • x>3 è verificato

    • y>2 è verificato

if (x>6 && y>2)

La condizione all'interno dell'if NON è verificata perché uno dei confronti non è verificato. Infatti:

    • x>6 NON è verificato

    • y>2 è verificato

if (x==4 && y==2)

La condizione all'interno dell'if NON è verificata perché entrambi i confronti non sono verificati. Infatti:

  • x==4 NON è verificato

  • y==2 NON è verificato


Operatore || (OR)


#include <stdio.h>

int main()

{

int x,y;

x=5;

y=3;

// primo IF - la condizione è verificata

if (x>3 || y>2){

printf("Primo IF: La condizione e' verificata\n");

}

else{

printf("Primo IF: La condizione NON e' verificata\n");

}

// secondo IF - la condizione è verificata

if (x>6 || y>2){

printf("Secondo IF: La condizione e' verificata\n");

}

else{

printf("Secondo IF: La condizione NON e' verificata\n");

}

// terzo IF - la condizione NON è verificata

if (x==4 || y==2){

printf("Terzo IF: La condizione e' verificata\n");

}

else{

printf("terzo IF: La condizione NON e' verificata\n");

}

return 0;

}

if (x>3 || y>2)

La condizione all'interno dell'if è verificata perché sono verificati i due confronti. Infatti:

    • x>3 è verificato

    • y>2 è verificato

if (x>6 || y>2)

La condizione all'interno dell'if è verificata perché uno dei confronti è verificato. Infatti:

    • x>6 NON è verificato

    • y>2 è verificato

if (x==4 || y==2)

La condizione all'interno dell'if NON è verificata perché entrambi i confronti non sono verificati. Infatti:

  • x==4 NON è verificato

  • y==2 NON è verificato


Operatore ! (NOT)


#include <stdio.h>

int main()

{

int x,y;

x=5;

y=3;

// primo IF - la condizione NON è verificata

if (!(x==5)){

printf("Primo IF: La condizione e' verificata\n");

}

else{

printf("Primo IF: La condizione NON e' verificata\n");

}

// secondo IF - la condizione NON è verificata

if (!x){

printf("Secondo IF: La condizione e' verificata\n");

}

else{

printf("Secondo IF: La condizione NON e' verificata\n");

}

// terzo IF - la condizione è verificata

if (!(x==4 && y==2)){

printf("Terzo IF: La condizione e' verificata\n");

}

else{

printf("terzo IF: La condizione NON e' verificata\n");

}

return 0;

}

if (!(x==5))

La condizione all'interno dell'if NON è verificata. Infatti:

    • x==5 è verificato

    • !(x==5) NON è verificato essendo la negazione di una condizione verificata

if (!x)

La condizione all'interno dell'if NON è verificata. Infatti:

    • x essendo diverso da zero è una condizione verificata

    • !x è la negazione di una condizione verificata

if (!(x==4 && y==2))

La condizione all'interno dell'if è verificata. Infatti:

  • x==4 NON è verificato

  • y==2 NON è verificato

  • x==4 && y==2 NON è verificato essendo l'AND di condizioni non verificate

  • !(x==4 && y==2) è verificato essendo la negazione di una condizione NON verifiata