Logické operátory jazyka C
Logické operátory provádí operace logický-AND (&&) a logický-OR ( || ).
Syntax
logical-AND-expression:
inclusive-OR-expressionlogical-AND-expression && inclusive-OR-expression
logical-OR-expression:
logical-AND-expressionlogical-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.