Базові оператори

Базові оператори


Зміст



1. Які види або категорії операторів існують в мові C#?

У мові C# існують такі категорії операторів:

  • арифметичні оператори;
  • оператори відношення;
  • логічні оператори;
  • оператори присвоювання;
  • порозрядні оператори;
  • спеціальні оператори для особливих випадків.

   


2. Які оператори належать до категорії арифметичних операторів?

У мові C# є наступні арифметичні оператори:

+  - додавання
-  - віднімання
*  - множення
/  - ділення
%  - ділення по модулю
-- - декремент
++ - інкремент

   


3. Приклади використання операторів додавання (+), віднімання (), множення (*) і ділення (/).

Оператори додавання (+), віднімання (), множення (*) та ділення (/) можна застосовувати до будь-якого вбудованого числового типу даних.

Приклад 1. Операції над змінними цілих типів.

int a, b, c;
a = 5;
b = 8;
c = a + b; // c = 13
c = a - b; // c = -3
c = a * b; // c = 40
c = a / b; // c = 0
с = 9 / 4; // c = 2

Важливо: ділення цілих чисел дає результат цілого типу.

Приклад 2. Операції над змінними, де є дані з плаваючою комою.

double a, b, c;

a = 1;
b = 2;
c = a + b; // c = 3.0
c = a - b; // c = -1.0
c = a * b; // c = 2.0
c = a / b; // c = 0.5

Приклад 3. Операції над змінними змішаних числових типів.

Якщо один з операндів має тип з плаваючою комою, а другий операнд має цілий тип, то результатом має також тип з плаваючою комою.

int i1, i2;
double d1, d2;

i1 = 5;
d1 = 0.5;
d2 = i1 + d1; // d2 = 5.5
d2 = i1 - d1; // d2 = 4.5

// Помилка: "Cannot implicitly convert type 'double' to 'int'"
// i2 = i1 + d1;

d2 = d1 / i1; // d2 = 0.1 - тип double
d2 = d1 * i1; // d2 = 2.5

   


4. Які особливості використання оператору обчислення остачі (%)?

Оператор % застосовується для обчислення остачі при діленні двох чисел. На відміну від мови C/C++ оператор % може бути застосований до даних з плаваючою комою.

Приклад.

int i;
double d;

i = 7 % 3; // i = 1
i = 8 % 3; // i = 2
i = 9 % 3; // i = 0
d = 7.0 % 3.0; // d = 1
d = 7.0 % 3.5; // d = 0
d = 7.0 % 3.8; // d = 3.2

   


5. Приклади застосування операторів інкременту (++) та декременту ().

Оператор інкременту (++) збільшує значення операнду на 1.

Оператор інкременту i++ або ++i є аналогічний оператору

i = i + 1;

Оператор декременту () зменшує значення операнду на 1.

Оператор декременту iабо i є аналогічний оператору

i = i - 1;

Приклад 1.

int a;

a = 5;
a++; // a = 6
a--; // a = 5
++a; // a = 6
--a; // a = 5

Приклад 2. Використання операції інкременту та декременту у виразі.

int a, b, c;

a = 5;
b = a++; // b = 5; a = 6
a = 5;
c = ++a; // c = 6; a = 6
a = 5;
b = a--; // b = 5; a = 4
a = 5;
c = --a; // c = 4; a = 4

Приклад 3.

int a, b;
a = 5; // a = 5
b = 5; // b = 5
b = b + ++a; // b = 5 + 6 = 11; a = 6

   


6. Які особливості застосування операторів відношення в C#?

Оператори відношення застосовуються для порівняння значень двох операндів між собою. Результатом роботи операторів відношення є значення істини (true) або фальші (false).

У мові C# введено такі оператори відношення:

== - рівне
!= - не рівне
>  - більше
<  - менше
>= - більше або рівне
<= - менше або рівне

Приклад.

bool b;
int x, y;

x = 8;
y = 5;
b = x > y;  // b = true
b = x == y; // b = false

   


7. Які особливості застосування логічних операторів в мові C#?

Операнди логічних операцій повинні відноситись до типу bool.

У мові C# до логічних відносяться такі операції:

&  - логічне "І"
|  - логічне "АБО"
^  - логічне виключне "АБО"
&& - логічне скорочене "І"
|| - логічне скорочене "АБО"
! - логічне "НІ"

Приклад застосування логічних операцій.

bool b;
bool x, y;

x = true;
y = false;

b = x ^ y;  // b = true
b = x & y;  // b = false
b = x | y;  // b = true
b = !x;     // b = false
b = x && y; // b = false
b = x || y; // b = true

   


8. Які переваги дає використання скорочених логічних операторів && та ||?

Скорочені логічні операції && та || працюють так само як і звичайні логічні операції & (логічне “І“) та | (логічне “АБО“).

Однак, у випадку довгих логічних виразів, ці операції дозволяють скоротити час виконання і підвищити ефективність коду. Це здійснюється за рахунок того, що після виконання першого операнду, другий операнд виконується в міру необхідності.

Наприклад. Розглянемо логічне “АБО” (оператор ||). Якщо перший операнд рівний true, тоді немає сенсу обчислювати другий операнд, оскільки весь вираз буде рівним true.

Так само в логічному “I” (оператор &&). Якщо перший операнд рівний false, тоді весь вираз буде рівним false. Отже, немає потреби обчислювати другий операнд.

За рахунок цього відбувається скорочення часу обробки довгих логічних виразів, що містять операції “І” та “АБО“.

Приклад.

bool b;
bool x, y;

x = true;
y = false;

// Тут немає сенсу обчислювати (!y ^ !x || x), оскільки y = false
b = y && (!y ^ !x || x); // b = false

// Тут немає потреби обчислювати (x & !y), оскільки x = true
b = x || (x & !y); // b = true

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

   


9. Які особливості застосування оператору присвоювання в програмі?

Найпростіший оператор присвоювання позначається символом ‘=‘ (дорівнює). Загальна форма оператора присвоювання:

ім’я_змінної = вираз;

Оператор присвоювання може створювати “ланцюжок” присвоєнь.

Приклад.

double x, y, z;
x = y = z = 0.00; // Занулити значення змінних x, y, z

У вищенаведеному прикладі значення ‘0.00‘ присвоюється спочатку змінній z, потім змінній y, потім змінній x.

Оператор присвоювання може бути складеним.

   


10. Як працюють складені оператори присвоювання?

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

У C# є наступні складені оператори присвоювання для арифметичних та логічних операцій:

+=, -=, *=, /=, %=, &=, |=, ^=

Приклади застосування складених операторів присвоювання.

int a = 0, b;
float f = 0f;

a += 10; // a = a + 10, a = 10
f -= 3;  // f = f - 3, f = -3
b = a;   // b = 10
b %= 3;  // b = b % 3, b = 1
f = 5;   // f = 5
f *= 3;  // f = f * 3, f = 15

   


11. Які особливості застосування порозрядних операторів у мові C#?

Порозрядні логічні оператори дозволяють оперувати окремими бітами. Порозрядні логічні оператори застосовуються тільки для цілочисельних операндів.

У C# існують наступні порозрядні логічні операції:

&  - порозрядне "І"
|  - порозрядне "АБО"
^  - порозрядне виключне "АБО"
>> - зсув вправо
<< - зсув вліво
~  - доповнення до 1 (унарний оператор "НІ")

Порозрядні оператори з двійковими одиницями і нулями працюють згідно нижченаведеної таблиці.

-------------------------------------------
 x     y     x&y     x|y     x^y     ~x
-------------------------------------------
 0     0      0       0       0       1
 0     1      0       1       1       1
 1     0      0       1       1       0
 1     1      1       1       0       0
--------------------------------------------

Приклад.

int x, y, z;

x = 0x03;
y = 0xFF;
z = x & y; // z = 0x03
z = x | y; // z = 0xFF

x = 0x01;
y = 0x02;
z = x ^ y; // z = 0x03

byte b;
x = 0x00;
b = (byte)~x; // b = 0xFF

   


12. Які особливості застосування операторів зсуву в C#?

Оператори зсуву можуть застосовуватись тільки до цілих типів.

Для виконання зсуву двійкових розрядів в C# передбачено два оператори:

<< - зсув вліво
>> - зсув вправо

Загальна форма операторів зсуву:

значення << кількість_біт
значення >> кількість_біт

де кількість_біт – кількість двійкових розрядів, на які зсувається вказане значення.

Приклад.

int a, b, c;

a = 5;
b = a >> 2; // b = 5/4 = 1;
c = a << 1; // c = 5*2 = 10

Операція зсуву вліво на n розрядів множить число на 2 в степені n. Зсув вправо на n розрядів означає ділення на 2 в степені n.

   


13. Що собою представляють спеціальні оператори для особливих випадків?

До спеціальних операторів можна віднести:

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

   


Зв’язані теми