Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга6.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.45 Mб
Скачать

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

До арифметичних операцій відносяться операції додавання (+), віднімання (-), множення (*), ділення (/) і визначення залишку від ділення (%).

Типи операндів арифметичних операцій, крім операції (%), можуть відрізнятися, і для них справедливі правила перетворення типів.

Операндами операції (%) повинні бути цілі числа. Типом результату є тип операндів після перетворення.

Арифметичні вирази мовою С записуються в рядок, так як в такому вигляді легше ввести програму в комп’ютер.

Операція множення (*) виконує множення операндів.

Відомості про арифметичні операції зведені в таблиці.

Таблиця 2.2 – Арифметичні операції

Дія

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

Алгебраїчний вираз

Вираз мовою С

Додавання

+

t + 9

t + 9

Віднімання

-

r – f

r – f

Множення

*

ab

a * b

Ділення

/

x/y чи x:y чи

x / y

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

%

z mod w

z % w

Приклад 2.3. Множення операндів.

int k = 5;

float f = 0.2;

double g;

g = f * k;

Тип добутку f й k перетвориться до типу double, потім результат присвоюється змінній g.

Операція ділення (/) виконує ділення першого операнда на другий. Якщо ділене і дільник цілі, то за наявності залишку він відкидається. При спробі ділення на нуль видається повідомлення про помилку під час виконання.

Приклад 2.4. Операція ділення.

int a = 7, b = 5, c = 0, d;

d = a / b; /* d = 1, залишок відкинуто */

d = b / a; /* d = 0, залишок відкинуто */

Операція (%) – визначає залишок від ділення першого операнда на другий. Знак результату залежить від конкретної реалізації. Якщо другий операнд дорівнює нулю, то видається повідомлення про помилку.

Приклад 2.5. Визначення залишка від ділення операндів.

int a = 7, b = 5, c = 0, d;

d = a % b; /* d = 2 – залишок від цілого поділу 7/5 */

d = b % a; /* d = 5 – залишок від цілого поділу 5/7 */

d = b % c; /* повідомлення про помилку */

2.3 Операції приведення типів

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

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

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

  • будь-яке char, short або enum перетворяться в int або unsigned;

  • якщо після першого кроку протиріччя в розходженні типів не усунені, то відбувається додаткове перетворення типів операндів відповідно до ієрархії типів:

int<unsigned<long< unsigned long<float<double<long double.

Оператор явного перетворення типу має вигляд:

(тип) ідентифікатор,

де тип – визначає тип даних до якого здійснюється перетворення.

Приклад 2.6. Операція приведення типів.

double f;

int a = 2, b = 3;

f = a/b; /* f=0 */

f = (double)a / b; /* f = 0,66666 */

В останньому виразі перед операцією ділення виконується операція перетворення типу змінної а. Спочатку а=2, а при явному перетворенні а=2.0. Тепер перший операнд (a) став типу double, а другий (b), типу int. Раніше говорилося про те, що перед виконанням операції обидва операнда приводяться до одного типу. При цьому тип, який має більш низький пріоритет, перетворюється до типу з пріоритетом більш високим. Тобто int перетворюється у double. Потім виконується ділення, в результаті якого f=0,66666.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]