Udostępnij za pośrednictwem


Operatory logiczne języka C

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

Składnia

logical-AND-expression:
inclusive-OR-expression
logical-AND-expression && inclusive-OR-expression

logical-OR-expression:
logical-AND-expression
logical-OR-expression || logical-AND-expression

Uwagi

Operatory logiczne nie wykonują zwykłych konwersji arytmetycznych. Zamiast tego oceniają każdy operand pod względem równoważności do 0. Wynikiem operacji logicznej jest 0 lub 1. Typ wyniku to int.

Operatory logiczne języka C zostały opisane poniżej:

Operator opis
&& Operator logiczny-AND generuje wartość 1, jeśli oba operandy mają wartości inne niżzerowe. Jeśli jeden operand jest równy 0, wynik wynosi 0. Jeśli pierwszy operand operacji logicznej AND jest równy 0, drugi operand nie jest obliczany.
|| Operator logiczny OR wykonuje operację inkluzywną OR na operandach. Wynik wynosi 0, jeśli oba operandy mają 0 wartości. Jeśli którykolwiek operand ma wartość niezerową, wynik wynosi 1. Jeśli pierwszy operand operacji logicznej OR ma wartość niezerową, drugi operand nie jest obliczany.

Operandy wyrażeń logicznych i logicznych OR są obliczane od lewej do prawej. Jeśli wartość pierwszego operandu jest wystarczająca do określenia wyniku operacji, drugi operand nie jest obliczany. Ten efekt jest nazywany oceną "zwarciową". Istnieje punkt sekwencji po pierwszym operandzie w wyrażeniu. Aby uzyskać więcej informacji, zobacz Punkty sekwencji.

Przykłady

W poniższych przykładach przedstawiono operatory logiczne:

int w, x, y, z;

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

W tym przykładzie funkcja jest wywoływana printf w celu wyświetlenia komunikatu, jeśli x jest mniejsza niż i y jest mniejsza niż y z. Jeśli x wartość jest większa niż y, drugi operand (y < z) nie jest obliczany i nic nie jest drukowane. Jest to kolejny przypadek oceny zwarciowej, który należy rozważyć podczas pisania porównań logicznych. W przeciwnym razie może to spowodować problemy, jeśli kod opiera się na skutkach ubocznych oceny drugiego operandu.

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

W tym przykładzie, jeśli x wartość jest równa wwartości , ylub z, drugi argument printf funkcji daje wartość true, a wartość 1 jest drukowana. W przeciwnym razie oblicza wartość false, a wartość 0 jest drukowana. Gdy tylko jeden z warunków ma wartość true, ocena przestanie działać.

Zobacz też