Арифметичні операції

Мова C# підтримує множину арифметичних операторів, які дозволяють виконувати над операндами математичні дії, та повертають результат у вигляді числового значення. Операнди – це числові значення: літерали, константи, змінні, які приймають участь у операції.

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

  • унарні – застосовуються до одного операнда;
  • бінарні – до двох операндів.

Унарні арифметичні операції

Оператор +

Унарний плюс – повертає те саме значення яке було йому передано.

int number1 = +345;     //345
int number2 = +number1; //345

Оператор -

Унарний мінус – застосовується для зміни знака числа.

long x = -123;
long y = -x; //123

Інкремент ++

Інкремент використовується для збільшення значення на одиницю. В C# є два типи інкрементів: префіксний та постфіксний.

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

byte a = 5;
byte b = ++a; // b = 6;

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

byte c = 5;
byte d = c++; // d = 5; c = 6;

Декремент --

Декремент використовується для зменшення на одиницю.

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

byte u = 9;
byte v = --u; // v = 8;

Постфіксний декремент спочатку повертає значення, а потім зменшує операнд на одиницю.

byte y = 7;
byte z = y--; // z = 7; y = 6;

В більшій частині програм можна зустріти постфіксні декремент та інкремент(i--, i++), хоча для їх виконання використовується більше ресурсів комп’ютера. Тому, при можливості, використовуйте префіксні оператори(++i, --i), це дає змогу покращити продуктивність виконання програми.

Бінарні арифметичні операції

Оператор додавання +

Бінарний плюс – повертає суму значень операндів.

int x = 34 + 5; //39
int y = x + 2 + 1; //42

Оператор віднімання -

Бінарний мінус – повертає різницю числових значень операндів.

var k = 22 - 10; //12
var g = k - 9; //3

Оператор ділення /

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

int f = 32 / 10; //3
int h = f / 2; //1

Для дійсних чисел – результат арифметичного ділення.

float t = 36F / 10; //3.6
float r = t / 2; //1.8

Якщо обидва операнди є цілими числами, то результатом виконання операції ділення буде ціле число.

double j = 33 / 5; //5

Для вирішення даної проблеми, потрібно явно вказати тип даних, хоча б одного із значень, за допомогою літерального суфіксу, чи додавши в кінець числа “.0”:

double j = 33d / 5; //6.6
double h = 47 / 4.0; //11.75

Залишок від ділення %

Оператор для отримання залишку від ділення операндів.

int m = 98 % 9; //8
var n = m % 5; //3

Порядок виконання арифметичних операцій

При виконанні декількох операцій в одному виразі, необхідно враховувати їх пріоритет. Найвищий пріоритет мають унарні операції, за ними йдуть мультиплікативні(множення, ділення та залишок від ділення), після них виконуються адитивні(додавання і віднімання) операції.

int p = 12 + 9 * 3 - 4 / 2; //37

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

Для того, щоб змінити порядок виконання, можна користуватися дужками.

Асоціативність операцій

Асоціативність – це властивість операцій, що дозволяє визначити послідовність їх виконання при однаковому приорітеті.

Існують два типи асоціативності:

  • ліво асоціативні операції – виконуються зліва направо;
  • право асоціативні – справа наліво;

Більшість операторів мови C# відносяться до першого типу. До другого входять префіксні інкремент та декремент.

Виходячи з цього, вираз b = 45 * 12 - 3 / 4 компілятор сприймає як b = (45 * 12) - (3 / 4).

При виконанні складних математичних розрахунків, розбивайте вирази на простіші, та використовуйте дужки, коли пріоритет операцій не очевидний. Це покращить читабельність коду програми, та дозволить уникнути незрозумілих ситуацій.

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