Logiske operatorer i C bruges til at kombinere flere betingelser/begrænsninger. Logiske operatorer returnerer enten 0 eller 1, det afhænger af om udtryksresultatet er sandt eller falsk. I C-programmering til beslutningstagning bruger vi logiske operatorer.
Vi har 3 logiske operatorer i C-sproget:
- Logisk OG ( && ) Logisk ELLER ( || ) Logisk IKKE ( ! )
Typer af logiske operatører
1. Logisk OG Operatør ( && )
Hvis begge operander ikke er nul, bliver betingelsen sand. Ellers har resultatet en værdi på 0. Returtypen for resultatet er int. Nedenfor er sandhedstabellen for den logiske OG-operator.
x | OG | X && Y |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
Syntaks
(operand_1 && operand_2)>
Eksempel
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;> }> |
>
>Produktion
Both values are greater than 0>
2. Logisk ELLER-operatør ( || )
Betingelsen bliver sand, hvis en af dem er ikke-nul. Ellers returnerer den falsk, dvs. 0 som værdien. Nedenfor er sandhedstabellen for den logiske ELLER-operator.
x | OG | X || OG |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Syntaks
(operand_1 || operand_2)>
Eksempel
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;> }> |
>
>Produktion
Any one of the given value is greater than 0>
3. Logisk IKKE-operatør ( ! )
Hvis betingelsen er sand, vil den logiske NOT-operator gøre den falsk og omvendt. Nedenfor er sandhedstabellen for den logiske NOT-operator.
x | !X |
---|---|
0 tcp ip model | 1 |
1 | 0 |
Syntaks
! (operand_1 && operand_2)>
Eksempel
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;> }> |
>
>
Kortslutningslogiske operatører
Når resultatet kan bestemmes ved at evaluere det foregående logiske udtryk uden at evaluere de yderligere operander, er det kendt som kortslutning.
Kortslutning kan ses i ligningen med mere end én logisk operator. De kan enten OG, ELLER eller begge dele.
1. Kortslutning i logisk OG operatør
Den logiske OG-operator returnerer sand, hvis og kun hvis alle operander evalueres til sand. Hvis den første operand er falsk, vil de yderligere operander ikke blive evalueret. Dette skyldes, at selvom de yderligere operander evalueres til sand, vil hele betingelsen stadig returnere falsk.
Eksempel
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;> }> |
>
>Produktion
Both conditions are satisfied. Conditions not satisfied.>
2. Kortslutning i logisk ELLER-operatør
OR-operator returnerer sand, hvis mindst én operand evalueres til sand. Hvis den første operand er sand, vil de yderligere operander ikke blive evalueret. Dette skyldes, at selvom de yderligere operander evalueres til falsk, vil hele betingelsen stadig returnere sand.
Eksempel
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;> }> |
>
>Produktion
At least one condition is satisfied. Conditions not satisfied.>
Ofte stillede spørgsmål om logiske operatører
Q1. Hvad er forrangen af logiske operatorer i programmering?
Svar:
Forrangen af logiske operatorer er: NOT, AND, OR. Det anbefales dog altid at bruge parenteser for at gøre evalueringsrækkefølgen eksplicit og undgå forvirring.
Q2. Kan logiske operatorer kædes sammen?
Svar:
Ja, logiske operatorer kan kædes sammen for at skabe komplekse forhold. For eksempel kan vi kombinere flere logiske AND (&&) eller logiske OR (||) operatorer i et enkelt udtryk for at evaluere flere betingelser samtidigt.
Q3. Hvad bliver outputtet af følgende kode?
C
#include> void> main()> > > int> a = 1, b = 0, c = 5;> > int> d = a && b> |
>
>
Svar:
6>
Q4. Hvad bliver outputtet af følgende kode?
C
#include> int> main()> {> > int> i = 1;> > if> (i++ && (i == 1))> > printf> (> 'techcodeview.com
'> );> > else> > printf> (> 'Coding
'> );> }> |
>
>
Svar:
Coding>