Logické operátory jazyka C

Logické operátory provádí operace logický-AND (&&) a logický-OR ( || ).

Syntax

  • logical-AND-expression:
    inclusive-OR-expression

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

  • logical-OR-expression:
    logical-AND-expression

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

Logické operátory neprovádějí běžné aritmetické převody.Místo toho vyhodnotí každý operand ve smyslu jeho rovnocennosti s 0.Výsledkem logické operace je 0 nebo 1.Výsledek tohoto typu je int.

Logické operátory jazyka C jsou popsány níže:

Operátor

Description

&&

Operátor logický-AND vytváří hodnotu 1, pokud mají oba operandy nenulové hodnoty.Pokud je jeden z operandů roven 0, výsledkem je 0.Pokud je první operand operace logický-AND roven 0, druhý operand není vyhodnocen.

||

Operátor logický-OR provádí na svých operandech operaci logického součtu.Výsledkem je 0, pokud jsou oba operandy rovny 0.Pokud má jeden z operandů nenulovou hodnotu, je výsledkem 1.Pokud má první operand operace logický-OR nenulovou hodnotu, druhý operand není vyhodnocen.

Operandy výrazů logický-AND a logický-OR jsou vyhodnocovány zleva doprava.Pokud hodnota prvního operandu postačuje k určení výsledku operace, druhý operand není vyhodnocen.Tento postup se nazývá "zkrácené vyhodnocení." Za prvním operandem je sekvenční bod.Viz Sekvenční body, pro další informace.

Příklady

Následující příklady ilustrují logické operátory:

int w, x, y, z;

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

V tomto příkladu je volána funkce printf, pro výpis zprávy, pokud je x menší než y a y je menší než z.Pokud je x větší než y, druhý operand (y < z) není vyhodnocen a nic se nevypíše.Nutno poznamenat, že toto chování může způsobovat problémy v případech, kdy má druhý operand vedlejší účinky, na které je z nějakého důvodu spoléháno.

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

V tomto příkladu, pokud se x rovná buď w, y nebo z, druhý argument funkce printf je vyhodnocen na hodnotu true a je vypsána hodnota 1.V opačném případě je vyhodnocen jako false a je vypsána hodnota 0.Jakmile je jedna z podmínek vyhodnocena jako true, vyhodnocení je ukončeno.

Viz také

Referenční dokumentace

Logický operátor AND: &&

Logický operátor OR: ||