logo

C Logiska operatörer

Logiska operatorer i C används för att kombinera flera villkor/begränsningar. Logiska operatorer returnerar antingen 0 eller 1, det beror på om uttrycksresultatet är sant eller falskt. I C-programmering för beslutsfattande använder vi logiska operatorer.

Vi har 3 logiska operatorer på C-språket:

    Logiskt OCH ( && ) Logiskt ELLER ( || ) Logiskt INTE ( ! )

Typer av logiska operatörer

1. Logisk OCH operatör ( && )

Om båda operanderna inte är noll blir villkoret sant. Annars har resultatet värdet 0. Returtypen för resultatet är int. Nedan är sanningstabellen för den logiska OCH-operatorn.



X

OCH X && Y

1

1

1

1

0

0

0

1

0

0

0

0

Syntax

(operand_1 && operand_2)>

Exempel

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 ( || )

Villkoret blir sant om någon av dem inte är noll. Annars returnerar den false, dvs 0 som värdet. Nedan är sanningstabellen för den logiska ELLER-operatorn.

X OCH X || OCH

1

1

1

1

typscript switch

0

1

0

1

1

0

0

0

Syntax

(operand_1 || operand_2)>

Exempel

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 NOT-operatör ( ! )

Om villkoret är sant kommer den logiska NOT-operatorn att göra det falskt och vice versa. Nedan är sanningstabellen för den logiska NOT-operatorn.

X !X

0

1

1

0

Syntax

 ! (operand_1 && operand_2)>

Exempel

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;> }>

>

>

tesked storlek

Kortslutning logiska operatörer

När resultatet kan bestämmas genom att utvärdera det föregående logiska uttrycket utan att utvärdera de ytterligare operanderna, kallas det kortslutning.

Kortslutning kan ses i ekvationen med mer än en logisk operator. De kan antingen OCH, ELLER eller båda.

1. Kortslutning i logisk OCH operatör

Den logiska AND-operatorn returnerar sant om och endast om alla operander utvärderas till sant. Om den första operanden är falsk, kommer de ytterligare operanderna inte att utvärderas. Detta beror på att även om de ytterligare operanderna utvärderas till sant, kommer hela villkoret fortfarande att returnera falskt.

Exempel

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-operatorn returnerar sant om minst en operand utvärderas till sant. Om den första operanden är sann, kommer de ytterligare operanderna inte att utvärderas. Detta beror på att även om de ytterligare operanderna utvärderas till falska, kommer hela villkoret fortfarande att vara sant.

Exempel

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.>

Vanliga frågor om logiska operatorer

Q1. Vilken företräde har logiska operatorer i programmering?

Svar:

Företrädet för logiska operatorer är: NOT, AND, OR. Det rekommenderas dock alltid att använda parenteser för att göra utvärderingsordningen tydlig och undvika förvirring.

Q2. Kan logiska operatorer kedjas samman?

Svar:

Ja, logiska operatorer kan kedjas samman för att skapa komplexa förhållanden. Till exempel kan vi kombinera flera logiska AND (&&) eller logiska ELLER (||) operatorer i ett enda uttryck för att utvärdera flera villkor samtidigt.

Q3. Vad blir resultatet av följande kod?

C




#include> void> main()> > >int> a = 1, b = 0, c = 5;> >int> d = a && b>

>

>

Svar:

6>

Q4. Vad blir resultatet av följande kod?

C




#include> int> main()> {> >int> i = 1;> >if> (i++ && (i == 1))> >printf>(>'techcodeview.com '>);> >else> >printf>(>'Coding '>);> }>

>

snabb sortering

>

Svar:

Coding>