OOP Course
Сьогодні

Підрозділ 2.6

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

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

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

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

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

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

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

Додавання + складає два значення. Якщо обидва операнди є цілими числами — результат цілий, якщо хоча б один дробовий — результат дробовий:

Віднімання - обчислює різницю двох значень:

Множення * обчислює добуток двох значень:

Ділення / має важливу особливість, яку необхідно засвоїти. Якщо обидва операнди є цілими числами, результат теж буде цілим — дробова частина відкидається без округлення. Тобто 10 / 3 дасть 3, а не 3.333.... Якщо результат присвоюється змінній double, це не рятує — сама операція вже виконалась як ціла:

Щоб отримати дробовий результат при діленні цілих змінних, достатньо явно привести один з операндів до double:

Залишок від ділення % повертає залишок після цілочисленного ділення. Ця операція корисна для перевірки парності числа, циклічного переходу по масиву та багатьох інших задач:

Унарні операції: інкремент і декремент

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

Префіксна форма (++x, --x) спочатку змінює значення змінної, а потім повертає вже змінене значення як результат. Тобто в момент, коли вираз обчислюється, змінна вже містить нове значення.

Постфіксна форма (x++, x--) спочатку повертає поточне (старе) значення змінної, а вже потім змінює її. Тобто в момент обчислення виразу береться старе значення, і лише після цього змінна оновлюється.

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

Те саме стосується декременту:

Коли інкремент або декремент стоять окремо в рядку — різниця між формами не має значення, оскільки результат операції нікуди не присвоюється. Обидва записи i++ і ++i однаково збільшать i на 1.

Пріоритет операцій

Коли в одному виразі поєднується кілька операцій, результат залежить від порядку їх виконання. Цей порядок визначається пріоритетом (precedence). Арифметичні операції в C# мають такий пріоритет (від вищого до нижчого):

  1. Постфіксний інкремент/декремент (x++, x--), а також префіксний (++x, --x);
  2. Множення, ділення, залишок (*, /, %);
  3. Додавання, віднімання (+, -).

Операції з вищим пріоритетом виконуються першими. Якщо пріоритет однаковий — визначає асоціативність: арифметичні оператори є лівоасоціативними, тобто виконуються зліва направо. Наприклад, вираз 10 / 5 * 2 трактується як (10 / 5) * 2 = 4, а не 10 / (5 * 2) = 1.

Проілюструємо пріоритет на прикладі:

Дужки дозволяють явно змінити порядок обчислень, незалежно від пріоритету. Все, що знаходиться всередині дужок, обчислюється першим:

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

Питання асоціативності виникає тоді, коли в одному виразі стоять підряд кілька операторів одного пріоритету. Наприклад:

Якби оператори / і * були правоасоціативними, вираз трактувався б як 10 / (5 * 2) = 1. Але арифметичні оператори в C# лівоасоціативні, тому лівий оператор виконується першим. Це звична математична поведінка, що відповідає правилам виконання операцій у рядку зліва направо.

Комплексний приклад: клінічні розрахунки

Розроблено Tomka Yurii · © 2026 ·