Умовні вирази

Умовні вирази – складні логічні конструкції, в мові програмування C#, які використовуються для керування ходом виконання програми.

Умовні конструкції можуть включають в себе:

  • Операції порівняння – це окрема група операторів, для порівняння значень, на вхід вони приймають два операнди однакового типу даних, а повертають логічне значення true або false;
  • Логічні операції – оператори, які використовуються для роботи з логічним типом даних bool (назва в .Net нотації System.Boolean).

Операції порівняння

Оператор перевірки на рівність ==

Якщо операнди рівні, то операція порівняння вертає значення true, якщо нерівні - false.

byte x = 2;
byte y = 11;
bool b = x == 2; //true
bool c = x == y; //false

Оператор перевірки на нерівність !=

Якщо операнди нерівні, то операція порівняння повертає значення true, якщо рівні - false.

byte y = 1;
bool b = y != 2;//true
bool c = y != 1;//false

Оператор менше <

Повертає true, якщо перший операнд менший за другий, в іншому випадку false.

byte x = 42;
bool b = 40 < x;//true
bool c = 50 < x;//false

Оператор менше рівно <=

Повертає true, якщо перший операнд менший за другий, або операнди рівні, в іншому випадку false.

byte x = 18;
bool b = x <= 46;//true
bool c = x <= 18;//true
bool d = x <= 14;//false

Оператор більше >

Повертає true, якщо перший операнд більший за другий, в іншому випадку false.

byte x = 17;
bool b = x > 15;//true
bool c = x > 22;//false

Оператор більше рівно >=

Повертає true, якщо перший операнд більший за другий, або операнди рівні, в іншому випадку false.

byte x = 6;
bool b = x >= 4;//true
bool c = x >= 6;//true
bool d = x >= 8;//false

Логічні операції

Застосовуються для оперування логічним типом даних bool, приймають в якості операндів та повертають булеві значення. Зазвичай використовуються для об’єднання декілька виразів з порівнянням.

Оператор логічного заперечення !

Заперечення (логічне не) – унарна операція, яка повертає true при значенні операнда false, та false – коли значення на вході true.

var b = false;
bool c = !b; //true
bool d = !(125 == 256); //true

Оператор логічного додавання

Диз’юнкція (логічне або) – бінарна операція, яка повертає значення true, якщо хоча б один з операндів рівний true, в іншому випадку – false.

В мові C#, логічне або має дві форми запису:

  • | – повна диз’юнкція, обчислює обидва операнди, навіть якщо перший дорівнює true;
  • || – скорочене логічне додавання, якщо значення першого операнда true, то другий операнд не обчислюється.
bool b = (2 > 5) | (1 > 2); // false тому що, (2 > 5) - false, (1 > 2) - false
bool c = (2 < 5) | (1 < 2); // true тому що, (2 < 5) - true, (1 > 2) - false
bool d = (2 < 5) || (1 < 2); // true, оскільки (2 < 5) - true, то другий операнд не обчислюється

Оператор логічного множення

Кон’юнкція (логічне і) – бінарна операція, яка вертає значення true, якщо обидва операнди рівні true, в іншому випадку – false.

По аналогії з попередньою операцією, логічне і підтримує дві форми запису:

  • & – повна кон’юнкція, обчислює обидва операнди, навіть якщо перший дорівнює false;
  • && – скорочене логічне множення, якщо значення першого операнда false, то значення другого не обчислюється.
bool a = (2 < 5) & (1 < 2); // true тому що, (2 < 5) - true, (1 < 2) - true
bool b = (2 < 5) & (1 > 2); // false тому що, (2 < 5) - true, (1 > 2) - false
bool c = (1 > 4) && (1 < 2); // false, оскільки (1 > 4) - false, то другий операнд (1 < 2) не обчислюється

Для покращення продуктивності виконання програми, рекомендується використовувати скорочені форми логічних операцій “і”(&&) та “або”(||).

Оператор логічного додавання за модулем ^

Виключна диз’юнкція (операція xor) – бінарна операція, яка повертає значення true, якщо операнди не рівні, тобто один з них має значення true, а інший - false, в іншому випадку – false.

bool a = (3 < 6) ^ (4 < 8); // false тому що, (3 < 6) - true, (4 < 8) - true
bool b = (2 < 5) ^ (1 > 2); // true тому що, (2 < 5) - true, (1 > 2) - false

Логічні оператори з присвоєнням

По аналогії з арифметичними та побітовими операціями, C# дозволяє використовувати логічні оператори з присвоєнням для булевих виразів.

Операндами в них можуть виступати:

  • змінні та константи булевого типу;
  • конструкції порівняння;
  • логічні вирази.

Логічне або з присвоєнням |=

Бінарний оператор, який присвоює лівому операнду значення його диз’юнкції з правим:

bool d = false;
d |= (1 != 2);
//альтернативна форма запису
d = d | (1 != 2);

Логічне і з присвоєнням &=

Бінарний оператор, який присвоює лівому операнду значення його кон’юнкції з правим:

bool d = true;
d &= (1 != 2);
//альтернативна форма запису
d = d & (1 != 2);

Логічне виключне або з присвоєнням ^=

Бінарний оператор, який присвоює лівому операнду результат операції xor лівого операнда з правим:

bool d = false;
d ^= (1 != 2);
//альтернативна форма запису
d = d ^ (1 != 2);

Пріоритет виконання операцій

Пріоритет Оператор Асоціативність
1 ! ліва
2 <, >, <=, >= -//-
3 ==, != -//-
4 & -//-
5 ^ -//-
6 | -//-
7 && -//-
8 || -//-
9 &=, |=, ^= права

* Ліва асоціативність – операції виконуються зліва направо.
** Права асоціативність – справа наліво.

Як і у випадку з арифметичними операціями, пріоритет виконання у складних умовних виразах можна змінювати використовуючи дужки – “(” та “)”.

Дивіться також: