Logické operátory v C sa používajú na kombinovanie viacerých podmienok/obmedzení. Logické operátory vrátia buď 0 alebo 1, v závislosti od toho, či je výsledok výrazu pravdivý alebo nepravdivý. V programovaní v jazyku C na rozhodovanie používame logické operátory.
čo je základná zostava ubuntu
V jazyku C máme 3 logické operátory:
- Logické AND ( && ) Logické ALEBO ( || ) Logické NIE ( ! )
Typy logických operátorov
1. Logický operátor AND ( && )
Ak sú oba operandy nenulové, podmienka sa stane pravdivou. V opačnom prípade má výsledok hodnotu 0. Návratový typ výsledku je int. Nižšie je uvedená pravdivostná tabuľka pre 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)>
Prí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ýkon
Both values are greater than 0>
2. Logický operátor OR ( || )
Podmienka sa stane pravdivou, ak je ktorákoľvek z nich nenulová. V opačnom prípade vráti hodnotu false, tj 0. Nižšie je uvedená pravdivostná tabuľka pre logický operátor OR.
| X | A | X || A |
|---|---|---|
| 1 riadkový príkaz autocad | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
Syntax
(operand_1 || operand_2)>
Prí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ýkon
Any one of the given value is greater than 0>
3. Logický operátor NOT ( ! )
Ak je podmienka pravdivá, logický operátor NOT ju urobí nepravdivou a naopak. Nižšie je uvedená pravdivostná tabuľka pre logický operátor NOT.
| X | !X |
|---|---|
| 0 | 1 |
| 1 | 0 |
Syntax
! (operand_1 && operand_2)>
Príklad
C
podreťazec java string
// 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 skratu
Keď možno výsledok určiť vyhodnotením predchádzajúceho logického výrazu bez vyhodnotenia ďalších operandov, je to známe ako skrat.
Skrat je možné vidieť v rovnici, ktorá má viac ako jeden logický operátor. Môžu buď AND, ALEBO, alebo oboje.
1. Skrat v logickom operátorovi AND
Logický operátor AND vráti hodnotu true vtedy a len vtedy, ak sa všetky operandy vyhodnotia ako pravdivé. Ak je prvý operand nepravdivý, ďalšie operandy sa nevyhodnotia. Je to preto, že aj keď sa ďalšie operandy vyhodnotia ako pravdivé, celá podmienka sa stále vráti ako nepravda.
Prí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ýkon
počítačové siete
Both conditions are satisfied. Conditions not satisfied.>
2. Skrat v logickom operátorovi OR
Operátor OR vráti hodnotu true, ak sa aspoň jeden operand vyhodnotí ako pravdivý. Ak je prvý operand pravdivý, ďalšie operandy sa nevyhodnotia. Je to preto, že aj keď sa ďalšie operandy vyhodnotia ako nepravda, celá podmienka sa stále vráti ako pravdivá.
Príklad
C++
// 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;> }> |
>
>
prečiarknutie markdownVýkon
At least one condition is satisfied. Conditions not satisfied.>
Časté otázky o logických operátoroch
Q1. Aká je prednosť logických operátorov v programovaní?
odpoveď:
Priorita logických operátorov je: NOT, AND, OR. Vždy sa však odporúča použiť zátvorky, aby bolo poradie hodnotenia jednoznačné a zabránilo sa nejasnostiam.
Q2. Dajú sa logické operátory spojiť dohromady?
odpoveď:
Áno, logické operátory je možné spájať a vytvárať zložité podmienky. Napríklad môžeme skombinovať viacero logických operátorov AND (&&) alebo logických operátorov OR (||) do jedného výrazu na vyhodnotenie viacerých podmienok súčasne.
Q3. Aký bude výstup nasledujúceho kódu?
C
#include> void> main()> > >int> a = 1, b = 0, c = 5;> >int> d = a && b> |
>
>
odpoveď:
6>
Q4. Aký bude výstup nasledujúceho kódu?
C
#include> int> main()> {> >int> i = 1;> >if> (i++ && (i == 1))> >printf>(>'techcodeview.com
'>);> >else> >printf>(>'Coding
'>);> }> |
>
>
odpoveď:
Coding>