logo

C Logiske operatører

Logiske operatorer i C brukes til å kombinere flere betingelser/begrensninger. Logiske operatorer returnerer enten 0 eller 1, det avhenger av om uttrykksresultatet er sant eller usant. I C-programmering for beslutningstaking bruker vi logiske operatorer.

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



    Logisk OG ( && ) Logisk ELLER ( || ) Logisk IKKE ( ! )

Typer logiske operatører

1. Logisk OG operatør ( && )

Hvis begge operandene ikke er null, blir betingelsen sann. Ellers har resultatet en verdi på 0. Returtypen for resultatet er int. Nedenfor er sannhetstabellen for den logiske OG-operatoren.

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

>

>

Produksjon

Both values are greater than 0>

2. Logisk ELLER-operatør ( || )

Betingelsen blir sann hvis noen av dem er ikke-null. Ellers returnerer den falsk, dvs. 0 som verdien. Nedenfor er sannhetstabellen for den logiske ELLER-operatoren.

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

>

>

Produksjon

Any one of the given value is greater than 0>

3. Logisk IKKE-operatør ( ! )

Hvis betingelsen er sann, vil den logiske NOT-operatoren gjøre den falsk og omvendt. Nedenfor er sannhetstabellen for den logiske NOT-operatoren.

X !X

0

freddie mercury født

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 å evaluere det foregående logiske uttrykket uten å evaluere de ytterligere operandene, er det kjent som kortslutning.

Kortslutning kan sees i ligningen som har mer enn én logisk operator. De kan enten OG, ELLER eller begge deler.

1. Kortslutning i logisk OG operatør

Den logiske OG-operatoren returnerer sann hvis og bare hvis alle operandene evalueres til sanne. Hvis den første operanden er falsk, vil ikke de andre operandene bli evaluert. Dette er fordi selv om de videre operandene evalueres til sanne, vil hele tilstanden fortsatt returnere usann.

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

>

>

Produksjon

Both conditions are satisfied. Conditions not satisfied.>

2. Kortslutning i logisk ELLER-operatør

OR-operator returnerer sann hvis minst én operand evalueres til sann. Hvis den første operanden er sann, vil ikke de andre operandene bli evaluert. Dette er fordi selv om de ytterligere operandene vurderes til falske, vil hele tilstanden fortsatt returnere sann.

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

>

>

Produksjon

At least one condition is satisfied. Conditions not satisfied.>

Vanlige spørsmål om logiske operatører

Q1. Hva er forrangen til logiske operatorer i programmering?

Svar:

Forrangen til logiske operatorer er: NOT, AND, OR. Det anbefales imidlertid alltid å bruke parenteser for å gjøre evalueringsrekkefølgen eksplisitt og unngå forvirring.

Q2. Kan logiske operatorer lenkes sammen?

Svar:

Ja, logiske operatorer kan lenkes sammen for å skape komplekse forhold. For eksempel kan vi kombinere flere logiske AND (&&) eller logiske OR (||) operatorer i et enkelt uttrykk for å evaluere flere forhold samtidig.

Q3. Hva blir resultatet av følgende kode?

C




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

>

>

Svar:

6>

Q4. Hva blir resultatet av følgende kode?

C




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

>

>

Svar:

Coding>