
- •12. Класи пам'яті даних 100
- •13. Робота з файлами 106
- •14. Посилання 111
- •Склад мови
- •Алфавіт мови
- •Лексеми
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Символьні рядки
- •Знаки операцій, роздільники, коментарі
- •Типи даних
- •Класифікація типів даних
- •Цілочислові типи
- •Дійсні типи
- •Оголошення змінних і констант
- •Переліки
- •Структура програми
- •Функція main
- •Область дії змінної
- •Введення і виведення даних
- •Функції стандартної математичної бібліотеки
- •Вирази і операції
- •Поняття виразу, операнда, операції
- •Порядок виконання операцій
- •Арифметичні операції
- •Порозрядні операції
- •Операції порівняння
- •Логічні операції
- •Операції присвоєння
- •Умовна операція
- •Операція визначення розміру sizeof
- •Узгодження типів у виразах
- •Умовні оператори
- •Оператори
- •Умовний оператор if
- •Оператор вибору switch
- •Оператори циклу
- •Цикл з параметром. Оператор for
- •Цикл з передумовою. Оператор while
- •Цикл з постумовою. Оператор do while
- •Оператори переходу
- •Використання псевдовипадкових чисел
- •Одновимірні масиви
- •Багатовимірні масиви
- •Символьні рядки
- •Вказівники
- •Оголошення вказівника, операції, пов’язані з вказівниками
- •Адресна арифметика
- •Void – вказівники, типізація вказівників
- •Звертання до елементів масивів через вказівники
- •Масиви символьних рядків і масиви вказівників
- •Динамічне виділення пам’яті
- •Структури і об’єднання
- •Оголошення і ініціалізація структур
- •Звертання до елементів структур
- •Перейменування типів
- •Об’єднання
- •Поля бітів
- •Директиви препроцесора
- •Призначення директив препроцесора
- •Директива включення #include
- •Директиви макропідстановок #define I #undef
- •Директиви умовної компіляції
- •Директиви #ifdef, #ifndef
- •Функції
- •Структура функції
- •Виклик функцій. Прототипи функцій
- •Взаємодія фактичних і формальних параметрів функцій
- •Inline – функції
- •Масиви і символьні рядки як параметри функцій
- •Використання кваліфікатора const в оголошеннях параметрів
- •Багатовимірні масиви як параметри функцій
- •Опрацювання структур у функціях
- •Вказівники на функції
- •Рекурсивні функції
- •Класи пам'яті даних
- •Клас пам'яті, час існування і видимість об’єкта
- •Область дії глобальних і локальних змінних
- •Специфікатори класів пам'яті
- •Специфікатори глобальних змінних
- •Багатофайлові програми
- •Робота з файлами
- •Звертання до файлів
- •Послідовний запис до файлу і послідовне читання з файлу
- •Файли з довільним доступом
- •Посилання
- •Призначення посилань
- •Передача аргументів функцій як посилань
Вирази і операції
Поняття виразу, операнда, операції
Виразом називають послідовність операндів, об’єднаних знаками операцій та круглими дужками, яка має певне значення одного з допустимих типів. В цьому значенні операнди – це об’єкти, над якими виконуються операції, а операції задають дії, що виконуються над операндами.
Операндами виразів можуть бути константи, змінні, первинні вирази – елементарні під вирази даного виразу. Операнди більшості операцій мови С++ мають бути скалярними даними, тобто вони можуть мати арифметичний, переліковий або вказівниковий тип.
В мові С++ великий набір вбудованих операцій, що дозволяє створювати компактні програми. Операції можна класифікувати за різними ознаками. Зокрема, за кількістю операндів, що вступають в операцію, виділяють унарні операції – застосовуються до одного операнда; бінарні – в операцію вступають два операнди; тернарні – в операцію вступають три операнди (існує лише одна така операція – умовна операція).
За видом дії, що виконується над операндами, операції можна поділити на арифметичні, порівняння (відношення), логічні, порозрядні (побітові), присвоєння, інші.
За старшинством (пріоритетом) операції поділяють на 16 рівнів, табл. 4.1. Найвищий пріоритет мають так звані первинні операції з пріоритетом 16, найнижчий – операція послідовних обчислень «кома».
Таблиця 4.1. Операції мови програмування С++
Пріо-ритет |
Знак |
Зміст операції |
Тип |
Асоціатив- ність |
16 |
( ) |
Звертання до функції |
Первинні |
Зліва направо |
[ ] |
Виділення елемента масиву через індекс |
|||
. |
Виділення елемента структури |
|||
-> |
Виділення елемента структури через вказівник |
|||
15 |
++ |
Постфіксний інкремент (збільшення на 1) |
Присвоєння |
- |
-- |
Постфіксний декремент (зменшення на 1) |
|||
14 |
- |
Зміна знака |
Різнотипні унарні |
Справа наліво |
++ |
Префіксний інкремент (збільшення на 1) |
|||
-- |
Префіксний декремент (зменшення на 1) |
|||
! |
Логічне заперечення |
|||
~ |
Побітове заперечення |
|||
& |
Визначення адреси |
|||
* |
Звертання через вказівник (адресу) |
|||
(тип) |
Перетворення до заданого типу |
|||
sizeof |
Визначення розміру операнда вв байтах |
|||
13 |
* |
Множення |
Арифме-тичні |
Зліва направо |
/ |
Ділення |
|||
% |
Остача від ділення |
|||
12 |
+ |
Додавання |
||
- |
Віднімання |
|||
11 |
<< |
Зсування вліво |
Зсування (побітові) |
|
>> |
Зсування вправо |
|||
10 |
< |
Менше |
Порівняння (відношен-ня) |
|
<= |
Не більше |
|||
> |
Більше |
|||
>= |
Не менше |
|||
9 |
== |
Дорівнює |
||
!= |
Не дорівнює |
|||
8 |
& |
Побітове AND |
Поразрядні (побітові) |
|
7 |
^ |
Побітове XOR |
||
6 |
| |
Побітове OR |
||
5 |
&& |
Логічне І |
Логічні |
|
4 |
|| |
Логічне АБО |
Продовження табл. 4.1
3 |
? : |
Вибір операнда за умовою |
Умовна |
Справа наліво |
2 |
= |
Звичайне присвоєння |
Присвоєння |
|
*= |
Множення з присвоєнням |
|||
/= |
Ділення з присвоєнням |
|||
%= |
Остача від ділення з присвоєнням |
|||
+= |
Додавання з присвоєнням |
|||
-= |
Віднімання з присвоєнням |
|||
>>= |
Зсування вправо з присвоєнням |
|||
<<= |
Зсування вліво з присвоєнням |
|||
&= |
Побітове AND з присвоєнням |
|||
|= |
Побітове XOR з присвоєнням |
|||
^= |
Побітове OR з присвоєнням |
|||
1 |
, |
Послідовні обчислення |
Кома |
Зліва направо |