Операції над числовими типами

 

Над числовими типами, як і над всіма іншими, можливі насамперед чотири основних операції: створення, видалення, вибір, відновлення. Специфічні операції над числовими типами – добре відомі всім арифметичні операції: додавання, віднімання, множення, ділення. Операція зведення в степінь у деяких мовах також є базовою і позначається спеціальним символом чи комбінацією символів (^ – у BASІС, ** – у PL/1), в інших – виконується вбудованими функціями (наприклад, pow – у C).

Варто вказати, що операція ділення по-різному виконується для цілих і дійсних чисел. При діленні цілих чисел дробова частина результату відкидається, як би близька до 1 вона не була. У зв'язку з цим у мові PASCAL маються навіть різні позначення для розподілу дійсних і цілих чисел – операції "/" та "dіv" відповідно. В інших мовах обидві операції ділення позначаються однаково, а тип результату ділення визначається типом операндів. Для цілих операндів можлива ще одна операція – остача від ділення – ("mod" – у PASCAL, "%" – у C). При цьому знак частки визначається знаками діленого та дільника, а знак залишку – знаком діленого.

Наприклад: – 31 dіv – 10 = +3; – 31 mod – 10 = – 1

+31 dіv – 10 = – 3; + 31 mod – 10 = + 1

+31 dіv – 10 = – 3; + 31 mod – 10 = + 1.

Ще одна група операцій над числовими типами – операції порівняння: "дорівнює", "не дорівнює", "більше", "менше" і т.п. Важливо те, що хоча операндами цих операцій є дані числових типів, результат має логічний тип – "істина" або "неправда". Говорячи про операції порівняння, варто звернути увагу на особливість виконання порівнянь на рівність/нерівність дійсних чисел. Оскільки ці числа представляються в пам'яті з якоюсь (неабсолютною) точністю, порівняння їх не завжди можуть бути абсолютно достовірні.

Оскільки ті ж самі операції припустимі для різних числових типів, виникає проблема арифметичних виразів із змішуванням типів. Це створює деякі незручності для програмістів, тому що в реальних задачах вирази із змішаними типами зустрічаються досить часто. Тому більшість мов допускає такі вирази, в яких операнди мають різні числові типи, але обробляються такі вирази в різних мовах по-різному. У мові PL/1, наприклад, всі операнди виразу приводяться до одного типу – до типу тієї змінної, у яку буде записаний результат, а потім уже вираз обчислюється. У мові C перетворення типів виконується в процесі обчислення виразу, при виконанні кожної окремої операції, без обліку інших операцій; кожна операція обчислюється з точністю найбільш точного в ній операнда. Програміст, який використовує вирази зі змішуванням типів, повинен точно знати правила їхнього обчислення для обраної мови.