
- •1 Основні елементи мови с
- •1.1 Алфавіт мови програмування
- •1.2 Лексеми
- •1.3 Ключові слова
- •1.4 Ідентифікатори
- •1.5 Класифікація типів даних
- •1.6 Літерали
- •1.7 Оператори
- •1.8 Коментарі
- •1.9 Директиви препроцесора
- •1.10 Організація програми
- •2 Операції та вирази
- •2.1 Загальні відомості
- •2.2 Арифметичні операції
- •2.3 Операції приведення типів
- •2.4 Операції присвоєння
- •2.5 Операції інкремента і декремента
- •2.6 Операції порівняння
- •2.7 Операції зсуву
- •2.8 Порозрядні операції
- •2.9 Логічні операції
- •2.10 Операція sizeof
- •2.11 Операція послідовного обчислення
- •2.12 Операція умови (?:)
- •2.13 Адресні операції
- •3 Прості типи даних
- •3.1 Оголошення змінних
- •3.2 Час існування та область видимості змінних
- •3.3 Цілі типи даних
- •3.4 Дійсні типи даних
- •4 Оператори керування
- •4.1 Оператор розгалуження if
- •4.2 Оператор розгалуження if-else
- •4.3 Оператор множинного розгалуження switch
- •4.4 Оператор циклу for
- •4.5 Оператор циклу while
- •4.6 Оператор циклу do while
- •4.7 Оператор break
- •4.8 Оператор continue
- •5 Функції
- •5.1 Основні поняття
- •5.2 Види виклику функцій
- •5.3 Область видимості
- •5.4 Порожній тип void
- •5.5 Передача аргументів у функцію
- •5.6 Рекурсивні функції
- •5.7 Прототипи функцій
- •6 Покажчики
- •6.1 Визначення та ініціалізація покажчиків
- •6.2 Визначення покажчиків
- •6.3 Масиви
- •6.4 Операції порівняння
- •6.5 Копіювання рядка
- •6.6 Покажчики на функцію
- •6.7 Покажчики на void
- •6.8 Арифметика покажчиків
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •7.3 Багатовимірні масиви
- •8 Рядки в с
- •8.1 Рядки
- •8.2.Створення рядків
- •8.3 Прототипи
- •8.3 Функції перетворення буферів
- •8.4 Функції перевірки літер
- •8.5 Операції з рядками
- •9 Структури, об’єднання, перерахування
- •9.1 Структури
- •9.2 Бітові поля
- •9.3 Ключове слово typedef
- •9.4 Об’єднання
- •9.5 Перераховуваний тип
- •10 Введення та виведення даних
- •10.1 Функція виведення printf
- •10.2Функція введення scanf
- •10.3 Введення та виведення у файл
- •11 Динамічне виділення пам'яті
2.10 Операція sizeof
За допомогою операції sizeof можна визначити розмір пам'яті, яка відповідає ідентифікатору чи типу. Операція sizeof має наступний формат:
sizeof (Вираз)
де у якості виразу може бути використаний ідентифікатор або ім'я типу.
Застосування операції sizeof до імені типу або до ідентифікатора, що має тип структури чи об'єднання, приводить до видачі фактичного розміру, що може включати ділянки пам'яті, які використовуються для вирівнювання елементів структури або об'єднання.
Приклад 2.15. Операції sizeof.
int a = 2;
float b = 4;
double c = 6;
printf(“%i %i %i\n”, sizeof(a), sizeof(b), sizeof(c));
/* на екрані побачимо: 4 4 8, кількість байт які в пам’яті
займають змінні a b та c */
printf(“%i %i\n”, sizeof(int), sizeof(double));
/* на екрані побачимо: 4 8, кількість байт, які відпові-
дають типам int та double */
2.11 Операція послідовного обчислення
Операція «,» – операція послідовного обчислення для двох чи більш виразів там, де за синтаксисом припустимий тільки один вираз. Обчислення виконуються зліва на право. При виконанні операції послідовного обчислення перетворення типів не відбувається.
2.12 Операція умови (?:)
У мові С присутня одна тернарна операція – умовна операція, що має наступний формат:
Операнд-1 ? Операнд-2 : Операнд-3
«Операнд-1»повинний бути цілого чи дійсного типу чи бути покажчиком. Він оцінюється з погляду його рівності 0. Якщо «Операнд-1» не дорівнює 0, то обчислюється «Операнд-2» і його значення є результатом операції. Якщо «Операнд-1» дорівнює 0, то обчислюється «Операнд-3» і його значення є результатом операції. Слід зазначити, що обчислюється або «Операнд-2», або «Операнд-3», але не обоє. Тип результату залежить від типів «Операнда-2» і «Операнда-3».
Приклад 2.16. Операція умови (?:).
int a = 2, b =4 , max;
max = (b <= a) ? a : b;
Результат виразу b <= a дорівнює нулю, тому змінній max присвоюється значення змінної b.
2.13 Адресні операції
Існує дві адресні операції: (&) – взяття адреси та (*) – та звернення по адресі.
Якщо перед ім'ям змінної чи елементу масиву стоїть &, це значить взяття їх адреси.
Ці операції найбільш частіше використовуються при роботі з покажчиками. Забігаючи наперед, відмітимо, що покажчик – це змінна, яка може приймати значення адреси іншої змінної певного типу.
Покажчик вказує на певний тип і описується у вигляді:
тип * ім'я_покажчика;
Приклад 2.17. Адресна операції: (*).
char *pch; /* покажчик на тип char. */
int *pi; /* покажчик на тип int. */
float *p1; /* покажчик на float. */
Приклад 2.18. Адресна операції: (*)
double x = 2.1, y, *p2; /* Опис змінних х, у типу double
і покажчика р2 на double. */
p2 = &x; /* покажчик р2 отримав значення
адреси змінної х. */
y = *p2; /* мінній у присвоєно значення ін-
шої змінної, адреса якої знахо-
диться у покажчику р2 .Тобто
у=х;*/
/* *р2 звернення по адресі, яка
знаходиться в р2.*/
Контрольні запитання
Що таке вираз?
Що таке операнд?
Що таке знаки пріоритету виконання операцій?
Що таке арифметичні операції?
Опишіть операцію (%).
Що таке операції приведення типів?
Що таке неявне перетворення типів?
Що таке складена операція присвоєння?
Наведіть приклади складених операцій присвоєння?
Що таке операція інкремента?
Наведіть приклади операцій порівняння.
Що таке операції зсуву?
Що таке порозрядні операції?
Що таке логічні операції?
Для чого потрібні логічні операції?
Що таке операція sizeof?
Що таке операції послідовного обчислення?
Опишіть синтаксис операції (?:).
Від чого залежить тип результату операції (?:)?
Що таке адресні операції?
Написати програму, що запитує в користувача ім’я та зсуває його на дві позначки праворуч.
Написати програму, що знаходить невідоме з даного виразу:
g = a & b + b * d + c / a – d % a;
якщо: a = 3, b = 3, c = 5, d = 7, g - ?;
Розставити дужки у виразі так, щоб програма вивела число 2;
Написати програму, що знаходить невідоме з даного виразу:
a = c & b – d + e % b;
якщо: a, b = 2, c = 5, d = 6,e = 0;
Розставити дужки у виразі так, щоб програма вивела число 0;
Написати програму, що знаходить невідоме з даного виразу:
f = c / d + (a * b) /d – c % a;
якщо: a = 5, b = 3,c = 8,d = 4,f - ?;