Sdílet prostřednictvím


Logické operátory jazyka C

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

Syntaxe

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

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

Poznámky

Logické operátory neprovádějí obvyklé aritmetické převody. Místo toho vyhodnocují každý operand z hlediska jeho ekvivalence na hodnotu 0. Výsledek logické operace je 0 nebo 1. Typ výsledku je int.

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

Operátor Popis
&& Logický operátor AND vytvoří hodnotu 1, pokud oba operandy mají nenulové hodnoty. Pokud se jeden operand rovná 0, výsledek je 0. Pokud je první operand logické operace AND roven 0, druhý operand se nevyhodnotí.
|| Logický operátor OR provádí operaci inclusive-OR na svých operandech. Výsledek je 0, pokud oba operandy mají 0 hodnot. Pokud některý z operandů má nenulovou hodnotu, výsledek je 1. Pokud má první operand logické operace OR nenulovou hodnotu, druhý operand se nevyhodnotí.

Operandy logických výrazů AND a logických výrazů OR se vyhodnocují zleva doprava. Pokud je hodnota prvního operandu dostatečná k určení výsledku operace, druhý operand se nevyhodnotí. Tento účinek se označuje jako vyhodnocení "zkratového okruhu". Za prvním operandem ve výrazu je bod sekvence. Další informace naleznete v tématu Sekvenční body.

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 printf je volána funkce k vytištění zprávy, pokud x je menší než y a y je menší než z. Pokud x je větší než y, druhý operand (y < z) se nevyhodnocuje a nic se nevytiskne. Jedná se o další případ vyhodnocení zkratového okruhu, který je potřeba při psaní logických porovnání zvážit. Jinak by to mohlo způsobit problémy, pokud kód spoléhá na vedlejší účinky vyhodnocení druhého operandu.

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

V tomto příkladu se druhý x zwyargument printf funkce vyhodnotí jako true a hodnota 1 se vytiskne. V opačném případě se vyhodnotí jako false a hodnota 0 se vytiskne. Jakmile se jedna z podmínek vyhodnotí jako pravdivá, vyhodnocení přestane.

Viz také