Logické operátory v C se používají ke kombinaci více podmínek/omezení. Logické operátory vrátí buď 0 nebo 1, záleží na tom, zda je výsledek výrazu pravdivý nebo nepravdivý. V programování v jazyce C pro rozhodování používáme logické operátory.
V jazyce C máme 3 logické operátory:
- Logické AND ( && ) Logické NEBO ( || ) Logické NE ( ! )
Typy logických operátorů
1. Logický operátor AND ( && )
Pokud jsou oba operandy nenulové, pak se podmínka stane pravdivou. Jinak má výsledek hodnotu 0. Návratový typ výsledku je int. Níže je pravdivostní tabulka pro logický operátor AND.
X | A | X && Y |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
Syntax
(operand_1 && operand_2)>
Příklad
C
// C program for Logical> // AND Operator> #include> // Driver code> int> main()> {> > int> a = 10, b = 20;> > if> (a>0 && b> 0) {> > printf> (> 'Both values are greater than 0
'> );> > }> > else> {> > printf> (> 'Both values are less than 0
'> );> > }> > return> 0;> }> |
>
>Výstup
Both values are greater than 0>
2. Logický operátor OR ( || )
Podmínka se stane pravdivou, pokud je některá z nich nenulová. V opačném případě vrátí hodnotu false, tj. 0. Níže je pravdivostní tabulka pro logický operátor OR.
X | A | X || A |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 jak získat emotikony jablka na android | 1 |
0 | 0 | 0 |
Syntax
unix vs windows
(operand_1 || operand_2)>
Příklad
C
// C program for Logical> // OR Operator> #include> // Driver code> int> main()> {> > int> a = -1, b = 20;> > if> (a>0 || b> 0) {> > printf> (> 'Any one of the given value is '> > 'greater than 0
'> );> > }> > else> {> > printf> (> 'Both values are less than 0
'> );> > }> > return> 0;> }> |
>
>Výstup
Any one of the given value is greater than 0>
3. Logický operátor NOT ( ! )
Pokud je podmínka pravdivá, logický operátor NOT ji učiní nepravdivou a naopak. Níže je pravdivostní tabulka pro logický operátor NOT.
X | !X |
---|---|
0 | 1 |
1 | 0 |
Syntax
! (operand_1 && operand_2)>
Příklad
C
// C program for Logical> // NOT Operator> #include> // Driver code> int> main()> {> > int> a = 10, b = 20;> > if> (!(a>0 && b> 0)) {> > // condition returned true but> > // logical NOT operator changed> > // it to false> > printf> (> 'Both values are greater than 0
'> );> > }> > else> {> > printf> (> 'Both values are less than 0
'> );> > }> > return> 0;> }> |
>
>
Logické operátory zkratu
Když lze výsledek určit vyhodnocením předchozího logického výrazu bez vyhodnocení dalších operandů, je to známé jako zkrat.
Zkratování lze vidět v rovnici, která má více než jeden logický operátor. Mohou buď AND, OR, nebo obojí.
1. Zkrat v logickém operátoru AND
Logický operátor AND vrátí hodnotu true tehdy a pouze tehdy, když se všechny operandy vyhodnotí jako true. Pokud je první operand nepravdivý, další operandy nebudou vyhodnoceny. Je to proto, že i když se další operandy vyhodnotí jako pravdivé, celá podmínka bude stále vracet nepravda.
Příklad
C++
// C++ Program to illustrate short circuiting in Logical AND> #include> using> namespace> std;> // utility function to check positive> bool> is_positive(> int> number)> {> > if> (number>0)> > return> true> ;> > else> > return> false> ;> }> // utility function to check if the number is even> bool> is_even(> int> number)> {> > if> (number % 2 == 0)> > return> true> ;> > else> > return> false> ;> }> // driver code> int> main()> {> > int> x = 10;> > // Both conditions are evaluated> > if> (is_positive(x) && is_even(x)) {> > cout <<> 'Both conditions are satisfied.'> << endl;> > }> > else> {> > cout <<> 'Conditions not satisfied.'> << endl;> > }> > int> y = -5;> > // The first condition is evaluated and found to be> > // false, so the second condition is not evaluated> > if> (is_positive(y) && is_even(y)) {> > cout <<> 'Both conditions are satisfied.'> << endl;> > }> > else> {> > cout <<> 'Conditions not satisfied.'> << endl;> > }> > return> 0;> }> |
>
>Výstup
Both conditions are satisfied. Conditions not satisfied.>
2. Zkrat v logickém operátoru OR
Operátor OR vrátí hodnotu true, pokud je alespoň jeden operand vyhodnocen jako true. Pokud je první operand pravdivý, další operandy nebudou vyhodnoceny. Je to proto, že i když se další operandy vyhodnotí jako nepravda, celá podmínka se stále vrátí jako pravdivá.
Příklad
C++
co je 10 z 1 milionu
// C++ program to illustrate the short circuiting in Logical> // OR> #include> using> namespace> std;> // utility function to check positive number> bool> is_positive(> int> number)> {> > if> (number>0)> > return> true> ;> > else> > return> false> ;> }> // utility function to check if the number is even> bool> is_even(> int> number)> {> > if> (number % 2 == 0)> > return> true> ;> > else> > return> false> ;> }> // driver code> int> main()> {> > int> x = 8;> > // The first condition is evaluated and found to be> > // true, so the second condition is not evaluated> > if> (is_positive(x) || is_even(x)) {> > cout <<> 'At least one condition is satisfied.'> > << endl;> > }> > else> {> > cout <<> 'Conditions not satisfied.'> << endl;> > }> > int> y = -5;> > // The first condition is evaluated and found to be> > // false, so the second condition is evaluated> > if> (is_positive(y) || is_even(y)) {> > cout <<> 'At least one condition is satisfied.'> > << endl;> > }> > else> {> > cout <<> 'Conditions not satisfied.'> << endl;> > }> > return> 0;> }> |
>
>Výstup
At least one condition is satisfied. Conditions not satisfied.>
Časté dotazy k logickým operátorům
Q1. Jaká je přednost logických operátorů v programování?
Odpovědět:
Priorita logických operátorů je: NOT, AND, OR. Vždy se však doporučuje používat závorky, aby bylo pořadí hodnocení jasné a zabránilo se zmatkům.
Q2. Lze logické operátory zřetězit dohromady?
Odpovědět:
Ano, logické operátory lze zřetězit a vytvořit tak složité podmínky. Můžeme například zkombinovat více logických operátorů AND (&&) nebo logických operátorů OR (||) do jediného výrazu a vyhodnotit tak více podmínek současně.
Q3. Jaký bude výstup následujícího kódu?
C
#include> void> main()> > > int> a = 1, b = 0, c = 5;> > int> d = a && b> |
>
>
Odpovědět:
6>
Q4. Jaký bude výstup následujícího kódu?
C
#include> int> main()> {> > int> i = 1;> > if> (i++ && (i == 1))> > printf> (> 'techcodeview.com
'> );> > else> > printf> (> 'Coding
'> );> }> |
>
>
Odpovědět:
Coding>