Операції і вирази
У усіх мовах програмування під виразом мається на увазі конструкція, складена з констант, змінних, знаків операцій, функцій, дужок. Вираз визначає порядок обчислення деякого значення. Якщо це числове значення, то такий вираз називають арифметичним. Ось декілька прикладів арифметичних виразів, записаних за правилами мови Сі :
a+b 12.5 - z 2*(X+Y)
х++ х+++b --n*2 n*=1
Три перші вираження мають традиційну форму для мов програмування високого рівня, тому їх сенс очевидний. Наступні чотири вираження специфічні для мови Сі.
Опишемо набір операцій, використовуваних в Сі, а також правила запису і обчислення виразів. Нагадаємо, що операція, що застосовується до одного операнда, називається унарною, а операція з двома операндами — бінарною.
Арифметичні операції
До арифметичних операцій відносяться:
— віднімання або унарний мінус;
+ складання або унарний плюс;
* множення;
/ ділення;
% ділення по модулю (аналог Mod в Паскале);
++ унарна операція збільшення на одиницю (інкремент);
-- унарна операція зменшення на одиницю (декремент).
Усі операції, окрім ділення по модулю, застосовані до будь-яких числових типів даних. Операція % застосована тільки до цілих чисел.
Розглянемо особливості виконання операції ділення. Якщо ділиме і дільник — цілі числа, то і результат — ціле число. В цьому випадку операція / діє аналогічно Div в Паскале. Наприклад, значення вираження 5/3 дорівнюватиме 2, а при обчисленні 1/5 вийде 0.
Якщо хоч би один з операндів має речовий тип, то і результат буде речовим. Наприклад, операції 5. / 3, 5. / 3., 5/3. дадуть речовий результат 1.6666.
Операції інкремента і декремента можуть застосовуватися тільки до змінних і не можуть — до констант і виразів. Операція ++ збільшує значення змінної на одиницю, операція — зменшує значення змінної на одиницю. Обидва знаки операції можуть записуватися як перед операндом (префіксна форма), так і після операнда (постфіксна форма), наприклад: ++X або X++, --а або а--. Три наступні оператори дають один і той же результат:
х=х+1; ++х; х++
Відмінність проявляється при використанні префіксною і постфіксною форм у виразах. Проілюструємо це на прикладах. Перший приклад:
а=3; b=2;
с=а++*b++;
В результаті виконання змінні отримають наступні значення: а=4, b=3, c=6.
Другий приклад:
а=3; b=2;
с=++а*++b;
Результати будуть такими: а = 4, b = 3, с = 12.
Пояснення наступне: при використанні постфіксної форми операції ++ і -- виконуються після того, як значення змінної було використане у вираженні, а префіксні операції — до використання. Тому в першому прикладі значення змінної з обчислювалося як твір 3 на 2, а в другому — як твір 4 на 3.
По убуванню старшинства арифметичні операції розташовані в наступному порядку:
++, --
— (унарний мінус)
*, /, %
+, -
Однакові за старшинством операції виконуються в порядку зліва направо. Як і в Паскалі, для зміни порядку виконання операцій у виразах можуть застосовуватися круглі дужки.