Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конс_лек_2.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
971.38 Кб
Скачать

4. Операції присвоювання.

До операцій присвоювання відносять:

= Просте присвоювання

+ = Додавання з присвоюванням

- = Відніміння з присвоюванням

* = Множення з присвоюванням

/ = Ділення із присвоюванням

а також префіксні і постфіксні операції:

+ +

Інкремент

--

Декремент

Всі операції присвоювання привласнюють змінній результат обчислення виразу.

Приклад:

а = (b = с)*d;

Операції +=, - =, * = і / = є укороченою формою запису операції присвоювання. їхнє застосування:

а+= b означає а = а + b

а-= b означає а = а - b

а*= b означає а = а * b

а/= b означає а = a/b

Префіксні і постфіксні операції ++ і -і використовують для збільшення (інкремент) і зменшення (декремент) на одиницю значення змінної. Семантика зазначених операцій наступна:

++а збільшує значення змінної а на 1 до використання цієї змінної у виразі.

а++ збільшує значення змінної а на 1 після використання цієї змінної у виразі.

--а зменшує значення змінної а на 1 до використання цієї змінної у виразі.

a-- зменшує значення змінної а на 1 після використання цієї змінної у виразі.

5. Повітові операції

До побітових операцій відносять: ~ Побітове доповнення

« Зрушення вліво

» Зрушення вправо

& Побітове І, видає адресу наступної за

цим змінної

ç Побітове включаюче АБО

^ Побітове виключаюче АБО

Операція sizeof() - видає розмір операнда праворуч (в одиницях розміру значення char).

Операція «, » поєднує два вираза в один і гарантує, що лівий вираз буде обчислюватися першим. Значення усього виразу дорівнює значенню правого.

Функції введення інформації. Функція scanf().

Функція scanf() найбільш загальна з функцій введення, оскільки може читати ряд форматів. Вона перетворює різні форми, що уводяться з клавіатури рядка в: цілі числа, числа з плаваючою комою, символи і рядки Сі. Вона використовує керуючий рядок виду:

Scanf(control, arg1, arg2,...);

де control - формат символів, що вводяться, специфікації формату;

argl, arg2,... - аргументи, у які записуються результати.

Якщо за рядком керування форматом аргументів більше, ніж специфікацій формату, зайві аргументи ігноруються. Якщо для специфікацій формату недостатньо аргументів, результат не визначений.

Специфікація формату функції має наступний вид:

% [*][довжина] [F/N] [h/l] тип

Кожне поле специфікації формату є одиночним символом або числом, що означає конкретний режим формату. Символ типу визначає, як інтерпретується вхідне поле.

Якщо за символом відсотка (%) стоїть символ, що не є символом керування форматом, цей символ і всі наступні символи (до наступного символу відсотка) розглядаються як звичайна послідовність символів, тобто послідовність символів, що повинна збігатися з введенням. Наприклад, щоб указати символ відсотка, треба використовувати %%.

Зірочка (*), що випливає за символом відсотка, подавляє присвоювання наступного вхідного поля , яке інтерпретується як поле зазначеного типу. Поле читається, але не зберігається.

Поле довжина (позитивне десяткове ціле число) задає максимальне число символів, що може бути прочитане з вхідного потоку. З вхідного потоку читається задана кількість символів, якщо тільки раніш не зустрінеться пропуск або символ, що не може бути перетворений відповідно до заданого формату. В останньому випадку може бути прочитане менше символів, ніж потрібно в специфікації довжини.

Префікси F і N дозволяють подавити угоди за замовчуванням про адресацію використовуваної моделі пам'яті. Префікс F повинний використовуватися для аргументу, що вказує на об'єкт far, а префікс N - для аргументу, що вказує на об'єкт near. Префікс 1 означає, що відповідний специфікації формату аргумент повинний указувати на об'єкт типу long чи double, а префікс h означає, що аргумент повинний бути покажчиком на тип short.

Символи типу, що можуть бути задані в специфікації формату будуть розглянуті пізніше.

Зауваження: при введенні числових чи інших даних, крім рядка, перед аргументом ставиться знак одержання адреси &. Якщо ж із вхідного потоку вводиться рядок символів, то такий знак не ставиться.

Приклад:

int асе;

float sim;

char name[20];

scanf("%d %f %s",&ace, &sim, name);

Необхідно також відзначити, що хоча функція scanf() і є універсальною, для введення різних типів даних: символів, рядків, існують спеціальні функції введення. Вони простіше у вживанні, працюють тільки з визначеним типом даних і не вимагають специфікацій формату.