- •2. Основні елементи мови с
- •3.1 Алфавіт мови програмування
- •3.2Лексеми
- •3.3Ключові слова
- •3.4Ідентифікатори
- •3.5 Класифікація типів даних
- •3.6 Літерали
- •3.7 Оператори
- •3.8 Коментарі
- •3.9 Директиви препроцесора
- •3.10 Організація програми
- •3. Операції та вирази
- •4.1 Загальні відомості
- •4.2 Арифметичні операції
- •4.3 Операції приведення типів
- •(Тип) ідентифікатор,
- •4.4 Операції присвоєння
- •4.5 Операції інкремента і декремента
- •4.6 Операції порівняння
- •4.7 Операції зсуву
- •4.8 Порозрядні операції
- •4.9 Логічні операції
- •4.10 Операція sizeof
- •Sizeof ( Вираз ),
- •4.11 Операція послідовного обчислення
- •4.12 Операція умови (?:)
- •Операнд-1 ? Операнд-2 : Операнд-3
- •4.13 Адресні операції
- •Тип * ім'я_покажчика;
- •4. Прості типи даних
- •5.1 Оголошення змінних
- •[ Модифікатори ] тип ім’я_змінної;
- •5.2 Час існування та область видимості змінних
- •5.3 Цілі типи даних
- •5.4 Дійсні типи даних
- •5. Оператори керування
- •5.1 Оператор розгалуження if
- •If ( Вираз ) true-оператор;
- •5.2 Оператор розгалуження if-else
- •If ( Вираз ) true-оператор; else false-оператор;
- •5.3 Оператор множинного розгалуження switch
- •5.4 Оператор циклу for
- •For ( Вираз 1 ; Вираз 2 ; Вираз 3 ) тіло циклу
- •5.5 Оператор циклу while
- •While ( Вираз ) тіло циклу
- •5.6 Оператор циклу do while
- •Тіло циклу while ( Вираз ) ;
- •5.7 Оператор break
- •5.8 Оператор continue
- •6 Введення та виведення даних
- •7.1 Функція виведення printf
- •Int printf( стрічка форматування, змінна1, змінна2, ... );
- •7.2Функція введення scanf
- •Int scanf (стрічка форматування, адреса змінної1, адреса змінної2, ... );
- •9.1 Введення та виведення у файл
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •Тип даних ім’я змінної [n];
- •7.3 Багатовимірні масиви
- •6. Функції
- •6.1 Основні поняття
- •{Тіло функції}
- •6.2 Область видимості
- •6.3 Порожній тип void
- •6.4 Передача аргументів у функцію
- •6.5 Рекурсивні функції
- •6.6 Прототипи функцій
- •8. Рядки в с
- •4.1 Прототипи
- •4.2 Функції перетворення буферів
- •4.3 Функції перевірки літер
- •4.4 Рядок символів
- •4.5 Операції з рядками:
- •4.6 Символьні константи
- •9. Покажчики
- •5.1 Визначення та ініціалізація покажчиків
- •5.2 Визначення покажчиків:
- •5.3 Масиви
- •5.6 Копіювання рядка
- •5.7 Посилання та оператор &
- •5.9 Посилання в якості результатів функції
- •5.10 Покажчики на функцію
- •Тип_функціі (* імя_покажчика) (специфікація_параметрів);
- •5.11 Покажчики на void
- •5.12 Арифметика покажчиків
- •10. Структури, об’єднання, перерахування
- •7.1 Структури
- •7.2 Ключове слово typedef
- •7.3 Об’єднання
- •7.4Перераховуваний тип (Enum)
- •Enum dataType
- •Enum day
- •11 Динамічне виділення пам'яті
(Тип) ідентифікатор,
де тип– визначає тип даних до якого здійснюється перетворення.
Приклад 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.
4.4 Операції присвоєння
Операція простого присвоєннявикористовується для заміни значення лівого операнда, значенням правого операнда. При присвоюванні відбувається перетворення типу правого операнда до типу лівого операнда.
Приклад 7. Операція простого присвоєння
int t;
char f ='a';
long z = 10;
t = f + z; /*t = 107*/
Значення змінної f перетворюється до типу long, обчислюється вираз f+z, результат перетворюється до типу int і потім присвоюється змінній t.
Крім простого присвоєння, є ціла група операцій присвоєння, що поєднують просте присвоєння з однією з бінарних операцій. Такі операції називаються складеними операціями присвоєнняі мають вигляд:
(операнд-1)(бінарна операція) =(операнд-2) .
Складене присвоєння по результату еквівалентно наступному простому присвоєнню:
(операнд-1)=(операнд-1)(бінарна операція)(операнд-2) .
Кожна операція складеного присвоєння виконує перетворення, що здійснюються відповідною бінарною операцією.
Відомості про складені операції присвоювання представлені у табл.
Таблиця 4.3 – Складені операції присвоювання
Лексема |
Пояснення складеної операції присвоєння |
*= |
помножити та присвоїти |
/= |
поділити та присвоїти |
%= |
залишок від ділення та присвоїти |
+= |
додати та присвоїти |
-= |
відняти та присвоїти |
&= |
порозрядне логічне «І» та присвоїти |
|= |
порозрядне логічне «АБО» та присвоїти |
>>= |
зсув вправо та присвоїти |
<<= |
зсув вліво та присвоїти |
^= |
порозрядне логічне «виключне АБО» та присвоїти |
Приклад 8. Види арифметичних операцій
int a = 1, b = 3, c = 6, d = 16, e = 9;
a+=2; /*еквівалентно виразу a = a + 2; */
b-=c; /* еквівалентно виразу b = b - c;*/
c/=3; /*еквівалентно виразу c = c / 3; */
d>>=4; /*еквівалентно виразу d = d >> 4; */
e%=a; /* еквівалентно виразу e = e % a;*/
4.5 Операції інкремента і декремента
Операції інкремента (++) і декремента (--) є унарними операціями присвоєння. Ці операції відповідно збільшують чи зменшують значення операнда на одиницю. Операнд може бути цілого чи дійсного типу чи бути покажчиком.
Операції інкремента і декремента мають дві форми запису: префіксна, коли операнд розташовується після знака операції (наприклад, ++а, --а); постфіксна, коли операнд розташовується ліворуч від знака операції (наприклад, а++, а--).
У випадку префіксної форми запису зміна операнда відбувається до його використання у виразі і результатом операції є збільшене чи зменшене значення операнда.
У випадку постфіксної форми запису операнд спочатку використовується для обчислення виразу, а потім відбувається зміна операнда.
Приклад 9. Операції інкремента (постфіксна)
int f=1, d;
d = (f++)*5;
Спочатку відбувається множення f*5, а потім збільшення f на одиницю. У результаті вийде d=5, f=2.
Приклад 10. Операції інкремента (префіксна)
int f=1, d;
d=(++f)*5;
Спочатку значення f збільшується на одиницю, а потім використовується в операції множення. У результаті одержимо d=10, f=2.
У випадку, якщо операції збільшення чи зменшення використовуються не у виразі, а як самостійні оператори, префіксна і постфіксна форми запису стають еквівалентними.
f++; /* еквівалентно */ ++f;