Udostępnij za pośrednictwem


Operatory logiczne języka C

Operatory logiczne wykonują operacje logiczne AND (&&) oraz OR ( || ).

Składnia

  • Wyrażenie logiczne AND
    niewykluczające wyrażenie OR

    wyrażenie logiczne AND && niewykluczające wyrażenie OR

  • wyrażenie logiczne OR:
    Wyrażenie logiczne AND

    wyrażenie logiczne OR || wyrażenie logiczne AND

Operatory logiczne nie wykonują typowych konwersji arytmetycznych.Zamiast tego szacują czy wartość każdego operandu jest równa 0.Wynik operacji logicznej jest równy 0 lub 1.Typ wyniku to int.

Poniżej opisano operatory logiczne C:

Operator

Opis

&&

Operator logiczny AND daje wartość 1, jeśli oba operandy mają niezerowe wartości.Jeśli któryś z operandów jest równy 0, wynik jest równy 0.Jeśli pierwszy operand operacji logicznej AND jest równy 0, drugi operand nie jest szacowany.

||

Operator logiczny OR wykonuje niewykluczającą operację OR na jego operandach.Jeśli oba operandy mają wartość 0, wynik jest równy 0.Jeśli któryś operand ma wartość różną od zera, wynikiem będzie liczba 1.Jeśli pierwszy operand operacji logicznej OR ma wartość różną od zera, drugi operand nie jest szacowany.

Operandy operacji logicznych AND oraz OR szacowane są od lewej do prawej.Jeśli wartość pierwszego operandu jest wystarczająca do określenia wyniku operacji, drugi operand nie jest szacowany.Jest to tak zwane "pomijanie warunków oceny". Po pierwszym operandzie występuje punkt sekwencji.Zobacz Punkt sekwencji aby uzyskać więcej informacji.

Przykłady

Poniższe przykłady ilustrują operatory logiczne:

int w, x, y, z;

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

W tym przykładzie funkcja printf wywoływana jest w celu drukowania komunikatu, jeśli x jest mniejsze niż y i y jest mniejsze niż z.Jeśli x jest większe od y, drugi operand (y < z) nie jest szacowany i nic nie jest drukowane.Należy zauważyć, że może to powodować problemy w przypadku gdy drugi operand posiada efekty uboczne, na których opiera się z jakiegoś innego powodu.

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

W tym przykładzie, jeśli x jest równe w, y, lub z, drugi argument funkcji printf ma wartość PRAWDA i drukowana jest wartość 1.W przeciwnym wypadku daje wynik false i drukowana jest wartość 0.Tak szybko, jak jeden z warunków jest spełniony, ocenianie zostaje zatrzymane.

Zobacz też

Informacje

Operator logiczny AND: &&

Operator logiczny OR: ||