Operatorii logici din C sunt utilizați pentru a combina mai multe condiții/constrângeri. Operatorii logici returnează fie 0, fie 1, depinde dacă rezultatul expresiei este adevărat sau fals. În programarea C pentru luarea deciziilor, folosim operatori logici.
Avem 3 operatori logici în limbajul C:
- ȘI logic ( && ) SAU logic ( || ) NU logic ( ! )
Tipuri de operatori logici
1. Operator logic și ( && )
Dacă ambii operanzi nu sunt zero, atunci condiția devine adevărată. În caz contrar, rezultatul are valoarea 0. Tipul de returnare al rezultatului este int. Mai jos este tabelul de adevăr pentru operatorul logic AND.
| X | ȘI | X Y |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 0 matrice în șir |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
Sintaxă
(operand_1 && operand_2)>
Exemplu
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;> }> |
>
>Ieșire
Both values are greater than 0>
2. Operator logic SAU ( || )
Condiția devine adevărată dacă oricare dintre ele este diferit de zero. În caz contrar, returnează false, adică 0 ca valoare. Mai jos este tabelul de adevăr pentru operatorul logic SAU.
| X | ȘI | X || ȘI |
|---|---|---|
| 1 | 1 | 1 |
| 1 care este dimensiunea ecranului monitorului meu | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
Sintaxă
(operand_1 || operand_2)>
Exemplu
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;> }> |
>
>Ieșire
Any one of the given value is greater than 0>
3. Operator logic NOT ( ! )
Dacă condiția este adevărată, operatorul logic NOT o va face falsă și invers. Mai jos este tabelul de adevăr pentru operatorul logic NOT.
| X | !X |
|---|---|
| 0 | 1 cifre romane 1-100 |
| 1 | 0 |
Sintaxă
! (operand_1 && operand_2)>
Exemplu
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;> }> |
>
>
Operatori logici de scurtcircuit
Când rezultatul poate fi determinat prin evaluarea expresiei logice precedente fără evaluarea operanzilor ulterioare, se numește scurtcircuitare.
Scurtcircuitarea poate fi văzută în ecuația care are mai mult de un operator logic. Ele pot fie ȘI, SAU sau ambele.
1. Scurtcircuitare în logic și operator
Operatorul logic AND returnează adevărat dacă și numai dacă toți operanzii sunt evaluați la adevărat. Dacă primul operand este fals, atunci operanzii suplimentari nu vor fi evaluați. Acest lucru se datorează faptului că, chiar dacă operanzii suplimentari se evaluează la adevărat, întreaga condiție va returna totuși false.
Exemplu
C++
java string.format
// 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;> }> |
>
>Ieșire
Both conditions are satisfied. Conditions not satisfied.>
2. Scurtcircuitare în operatorul logic SAU
Operatorul OR returnează adevărat dacă cel puțin un operand este evaluat la adevărat. Dacă primul operand este adevărat, atunci operanzii suplimentari nu vor fi evaluați. Acest lucru se datorează faptului că, chiar dacă operanzii suplimentari sunt evaluați la fals, întreaga condiție va returna totuși adevărată.
Exemplu
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;> }> |
>
>Ieșire
At least one condition is satisfied. Conditions not satisfied.>
Întrebări frecvente despre operatorii logici
Î1. Care este precedența operatorilor logici în programare?
Răspuns:
Prioritatea operatorilor logici este: NOT, AND, OR. Cu toate acestea, este întotdeauna recomandat să folosiți paranteze pentru a face ordinea evaluării explicită și pentru a evita confuzia.
Q2. Operatorii logici pot fi legați împreună?
Răspuns:
Da, operatorii logici pot fi legați împreună pentru a crea condiții complexe. De exemplu, putem combina mai mulți operatori logici AND (&&) sau logici SAU (||) într-o singură expresie pentru a evalua mai multe condiții simultan.
Q3. Care va fi rezultatul următorului cod?
C
#include> void> main()> > >int> a = 1, b = 0, c = 5;> >int> d = a && b> |
>
>
Răspuns:
6>
Î4. Care va fi rezultatul următorului cod?
C
șir în întreg java
#include> int> main()> {> >int> i = 1;> >if> (i++ && (i == 1))> >printf>(>'techcodeview.com
'>);> >else> >printf>(>'Coding
'>);> }> |
>
>
Răspuns:
Coding>