- •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 Динамічне виділення пам'яті
4.6 Операції порівняння
Мова C підтримує 2 групи операцій порівняння – операції рівності та операції відношення. Відомості про операції порівняння зведені в таблиці.
Вирази в яких присутні операції порівняння як правило використовуються в операторах керування для задання умови. Для операторів розгалуження (if, if else) це умова по якій вибирається напрямок подальшого ходу програми. Для операторів циклів (for, while, do while) це умова при виконанні якої буде виконана чергова ітерація циклу (у випадку якщо значення виразу дорівнює 1) а при не виконанні якої буде здійснено вихід з циклу (у випадку якщо значення виразу дорівнює 0).
Таблиця 4.4– Операції порівняння
Алгебраїчний запис |
Лексеми операцій |
Приклад виразу у С |
Смисл виразу |
Операції рівності | |||
= |
= |
x==y |
xрівнийy |
!= |
x != y |
x не рівний y | |
Операції відношення | |||
> |
> |
x > y |
x більше y |
< |
< |
x < y |
xменше y |
>= |
x>=y |
xбільше чи рівнеy | |
<= |
x<=y |
xменше чи рівнеy |
Приклад. 11. Операції порівняння
int a=1, b=4;
printf("%i \n", a<=b); /*результат : 1*/
printf("%i \n", a==b); /*результат : 0*/
printf("%i \n", a!=b); /*результат : 1*/
printf("%i \n", a>b); /*результат : 0*/
4.7 Операції зсуву
Порозрядні логічні операції зсуву вліво (<<)та вправо (>>) застосовуються до даних цілих типів. Результат операцій зсуву теж буде цілим і відповідає двійковому представленню числа, зміщеному вліво чи право на задане число біт. При цьому висунуті за межі представлення типу біти втрачаються.
Операції зсуву здійснюють зсув операнда вліво (<<)чи вправо(>>)на число бітів, що задається другим операндом.
Формат представлення цихопераційнаступний:
Вираз 1 << Вираз 2,
Вираз 1 >> Вираз 2,
де Вираз 1– дані цілого типу,Вираз 2 – константа або константний вираз цілого типу, який визначає кількість зсунутих біт.
Приклад 12.Операції зсуву
int a = 9; /* змінна a в двійковому представлені 1001 */
int b = a>>2; /* змінна b в двійковому представленні дорівнює 10, тобто в десятковому 2 */
int c = a<<2; /* змінна с в двійковому представленні дорівнює 100100, тобто в десятковому 36.*/
4.8 Порозрядні операції
До порозрядних операцій відносяться: операція порозрядного логічного "І" (&), операція порозрядного логічного "АБО" (|), операція порозрядного "виключного АБО" (^). Таблиці істинності порозрядних операцій зображенні у таблиці 4.5
Таблиця 4.5 – Таблиці істинності порозрядних операцій
A |
b |
a & b |
a | b |
a ^ b |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
Операнди порозрядних операцій можуть бути будь-якого цілого типу. При необхідності над операндами виконуються перетворення за замовчуванням, тип результату - це тип операндів після перетворення.
Операція порозрядного логічного І (&) порівнює кожен біт першого операнда з відповідним бітом другого операнда. Якщо обидва порівнюваних біта одиниці, то відповідний біт результату встановлюється в 1, у протилежному випадку в 0.
Операція порозрядного логічного АБО (|) порівнює кожен біт першого операнда з відповідним бітом другого операнда. Якщо кожен з порівнюваних бітів дорівнює 1, то відповідний біт результату встановлюється в 1, у протилежному випадку результуючий біт дорівнює 0.
Операція порозрядного виключного АБО (^) порівнює кожен біт першого операнда з відповідними бітами другого операнда. Якщо один з порівнюваних бітів дорівнює 0, а другий біт дорівнює 1, то відповідний біт результату встановлюється в 1, у протилежному випадку, тобто коли обидва біти рівні 1 чи 0, біт результату встановлюється в 0.
Приклад 13. Операція порозрядного порівняння
int a=5, b=11, c;
c = a | b; /* с = 15 */
c = a & b; /* с = 1 */
c = a ^ b; /* с = 14 */
При обчиcленні порозрядних операцій кожен операнд представляється у двійковій формі. Так значення змінноїa у двійковій формі буде 01012, значення змінноїb – 10112. Використовуючи таблиці істинності (табл. 4.5) для відповідної порозрядної операції, отримується результат у двійковій формі, який потім переводиться у десяткову форму. Приклад обчислення порозрядних операцій наведений на рис. 4.2.
Рисунок 4.2 - Приклад обчислення порозрядних операцій