Logični operatorji v C se uporabljajo za kombiniranje več pogojev/omejitev. Logični operatorji vrnejo 0 ali 1, odvisno od tega, ali je rezultat izraza resničen ali napačen. Pri programiranju C za odločanje uporabljamo logične operatorje.
funkcija python chr
V jeziku C imamo 3 logične operatorje:
- Logično IN (&&) Logično ALI ( ||) Logično NE (!)
Vrste logičnih operatorjev
1. Logični operator IN ( && )
Če oba operanda nista nič, postane pogoj resničen. V nasprotnem primeru ima rezultat vrednost 0. Vrsta vrnitve rezultata je int. Spodaj je tabela resnic za logični operator IN.
| X | IN | X && Y |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
Sintaksa
(operand_1 && operand_2)>
Primer
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;> }> |
>
>Izhod
Both values are greater than 0>
2. Logični ALI operator ( || )
Pogoj postane resničen, če kateri koli od njih ni nič. V nasprotnem primeru vrne false, tj. 0 kot vrednost. Spodaj je tabela resnic za logični operator ALI.
| X | IN | X || IN |
|---|---|---|
| 1 | 1 if-else java | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
Sintaksa
(operand_1 || operand_2)>
Primer
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;> }> |
>
>Izhod
Any one of the given value is greater than 0>
3. Logični NE operator ( ! )
Če je pogoj resničen, ga bo logični operator NE spremenil v napačnega in obratno. Spodaj je tabela resnic za logični operator NE.
| X | !X |
|---|---|
| 0 | 1 |
| 1 | 0 |
Sintaksa
! (operand_1 && operand_2)>
Primer
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;> }> |
združitev pd
>
>
Logični operatorji kratkega stika
Kadar je rezultat mogoče določiti z vrednotenjem predhodnega logičnega izraza brez vrednotenja nadaljnjih operandov, je to znano kot kratek stik.
Kratek stik lahko opazimo v enačbi, ki ima več kot en logični operator. Lahko IN, ALI ali oboje.
1. Kratek stik v logičnem operatorju IN
Logični operator IN vrne true, če in samo če so vsi operandi ocenjeni na true. Če je prvi operand napačen, nadaljnji operandi ne bodo ovrednoteni. To je zato, ker tudi če bodo nadaljnji operandi ovrednoteni kot true, bo celoten pogoj še vedno vrnil false.
Primer
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;> }> |
>
>Izhod
Both conditions are satisfied. Conditions not satisfied.>
2. Kratek stik v logičnem operatorju ALI
Operator OR vrne true, če je vsaj en operand ocenjen kot true. Če je prvi operand resničen, potem nadaljnji operandi ne bodo ovrednoteni. To je zato, ker tudi če bodo nadaljnji operandi ocenjeni kot false, bo celoten pogoj še vedno vrnil true.
Primer
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;> }> |
>
>Izhod
At least one condition is satisfied. Conditions not satisfied.>
Pogosta vprašanja o logičnih operatorjih
Q1. Kakšna je prednost logičnih operatorjev v programiranju?
odgovor:
Prednost logičnih operatorjev je: NE, IN, ALI. Vendar je vedno priporočljiva uporaba oklepajev, da je vrstni red vrednotenja jasen in se izognete zmedi.
Q2. Ali je mogoče logične operatorje povezati skupaj?
odgovor:
Da, logične operatorje je mogoče povezati v verigo, da ustvarijo zapletene pogoje. Na primer, lahko združimo več logičnih IN (&&) ali logičnih ALI (||) operatorjev v enem samem izrazu, da ovrednotimo več pogojev hkrati.
Q3. Kakšen bo rezultat naslednje kode?
C
#include> void> main()> > >int> a = 1, b = 0, c = 5;> >int> d = a && b> |
propozicijska logika
>
>
odgovor:
6>
Q4. Kakšen bo rezultat naslednje kode?
C
#include> int> main()> {> >int> i = 1;> >if> (i++ && (i == 1))> >printf>(>'techcodeview.com
'>);> >else> >printf>(>'Coding
'>);> }> |
>
>
odgovor:
Coding>