logo

C Logické operátory

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>