Expresii condiționale
Un set separat de operații îl reprezintă expresiile condiționale. Astfel de operații returnează o valoare logică, adică o valoare de tip bool: true, dacă expresia este adevărată, și false, dacă expresia este falsă. La astfel de operații se referă operațiile de comparație și operațiile logice.
Operații de comparație
În operațiile de comparație sunt comparate două operanzi și este returnată o valoare de tip bool - true, dacă expresia este adevărată, și false, dacă expresia este falsă.
- ==
Compară doi operanzi pentru egalitate. Dacă sunt egali, operația returnează true, dacă nu sunt egali, returnează false:
int a = 10;
int b = 4;
bool c = a == b; // false
- !=
Compară doi operanzi și returnează true, dacă operanzii nu sunt egali, și false, dacă sunt egali.
int a = 10;
int b = 4;
bool c = a != b; // true
bool d = a != 10; // false
- <
Operația "mai mic decât". Returnează true, dacă primul operand este mai mic decât al doilea, și false, dacă primul operand este mai mare decât al doilea:
int a = 10;
int b = 4;
bool c = a < b; // false
- >
Operația "mai mare decât". Compară doi operanzi și returnează true, dacă primul operand este mai mare decât al doilea, altfel returnează false:
int a = 10;
int b = 4;
bool c = a > b; // true
bool d = a > 25; // false
- <=
Operația "mai mic sau egal". Compară doi operanzi și returnează true, dacă primul operand este mai mic sau egal cu al doilea. Altfel returnează false.
int a = 10;
int b = 4;
bool c = a <= b; // false
bool d = a <= 25; // true
- >=
Operația "mai mare sau egal". Compară doi operanzi și returnează true, dacă primul operand este mai mare sau egal cu al doilea, altfel returnează false:
int a = 10;
int b = 4;
bool c = a >= b; // true
bool d = a >= 25; // false
Operațiile <, >, <=, >= au o prioritate mai mare decât == și !=.
Operații logice
În C# sunt definiți și operatorii logici, care de asemenea returnează o valoare de tip bool. Ca operanzi, aceștia acceptă valori de tip bool. De regulă, se aplică relațiilor și combină mai multe operații de comparație.
- |
Operația de adunare logică sau OR logic. Returnează true, dacă cel puțin unul dintre operanzi returnează true.
bool x1 = (5 > 6) | (4 < 6); // 5 > 6 - false, 4 < 6 - true, deci returnează true
bool x2 = (5 > 6) | (4 > 6); // 5 > 6 - false, 4 > 6 - false, deci returnează false
- &
Operația de înmulțire logică sau AND logic. Returnează true, dacă ambii operanzi sunt simultan egali cu true.
bool x1 = (5 > 6) & (4 < 6); // 5 > 6 - false, 4 < 6 - true, deci returnează false
bool x2 = (5 < 6) & (4 < 6); // 5 < 6 - true, 4 < 6 - true, deci returnează true
- ||
Operația de adunare logică. Returnează true, dacă cel puțin unul dintre operanzi returnează true.
bool x1 = (5 > 6) || (4 < 6); // 5 > 6 - false, 4 < 6 - true, deci returnează true
bool x2 = (5 > 6) || (4 > 6); // 5 > 6 - false, 4 > 6 - false, deci returnează false
- &&
Operația de înmulțire logică. Returnează true, dacă ambii operanzi sunt simultan egali cu true.
bool x1 = (5 > 6) && (4 < 6); // 5 > 6 - false, 4 < 6 - true, deci returnează false
bool x2 = (5 < 6) && (4 < 6); // 5 < 6 - true, 4 < 6 - true, deci returnează true
- !
Operația de negare logică. Se aplică unui singur operand și returnează true, dacă operandul este egal cu false. Dacă operandul este egal cu true, operația returnează false:
bool a = true;
bool b = !a; // false
- ^
Operația de excludere OR. Returnează true, dacă fie primul, fie al doilea operand (dar nu simultan) sunt egali cu true, altfel returnează false:
bool x5 = (5 > 6) ^ (4 < 6); // 5 > 6 - false, 4 < 6 - true, deci returnează true
bool x6 = (50 > 6) ^ (4 / 2 < 3); // 50 > 6 - true, 4/2 < 3 - true, deci returnează false
Aici avem două perechi de operații | și || (precum și & și &&) care îndeplinesc acțiuni similare, dar nu sunt echivalente.
În expresia z = x | y; vor fi calculate ambele valori - x și y.
În expresia z = x || y; mai întâi va fi calculată valoarea x și, dacă aceasta este true, atunci calcularea valorii y nu mai are sens, deoarece în orice caz z va fi egal cu true. Valoarea y va fi calculată doar în cazul în care x este false.
Același lucru este valabil și pentru perechea de operații &/&&. În expresia z = x & y; vor fi calculate ambele valori - x și y.
În expresia z = x && y; mai întâi va fi calculată valoarea x și, dacă aceasta este false, atunci calcularea valorii y nu mai are sens, deoarece în orice caz z va fi egal cu false. Valoarea y va fi calculată doar în cazul în care x este true.
De aceea, operațiile || și && sunt mai convenabile în calcule, deoarece permit reducerea timpului necesar pentru calcularea valorii expresiei, și astfel cresc performanța. Iar operațiile | și & sunt mai potrivite pentru efectuarea operațiilor pe biți asupra numerelor.