Стаття урок з № 8

Урок 8 З / С ++. Інкремент і декремент.


Ми вже розглядали операції присвоювання в формі х = 10 або х = у * 2х і т.п. Зараз хотілося б додати трохи про операції присвоювання.







Коли ми зі значенням змінної виробляли арифметичну дію і після записували результат в цю ж змінну, то ми це писали так:
х = х + 10

Мова С дозволяє цю ж операцію записати і по-іншому: х + = 10. Що змінюється від такого написання? По-перше, вам не потрібно вдруге набирати ім'я тієї ж змінної. В даному випадку, у нас х і це великого значення не має, але імена адже можуть бути набагато більше, тобто, довше. Природно, можна його скопіювати, але це все одно займе часу більше, ніж другий варіант написання даної операції. Крім того, компілятор другі варіанти написання обробляє трохи швидше. (Так кажуть в літературі, правда ні Сашко, ні я не пробували перевіряти це на практиці). Такі операції називаються скороченими або складовими присвоювання.

До іншим арифметичним операторам ми теж можемо застосувати скорочене написання. Так, отримаємо:
замість х = х-2 х- = 2
замість х = х * 2 х * = 2
замість х = х / 2 х / = 2
замість х = х% 2 х% = 2.

Якщо пам'ятаєте, ми говорили, що в цих операціях є 2 операнда: один зліва - той, якому присвоюється значення, і другий - праворуч, чиє значення присвоюється лівому операнду. Але виявляється, що це не єдиний вид операції зміни і присвоювання) в мові С. Існують операції присвоювання з ОДНИМ оператором. Такі операції називаються унарними саме тому, що мають один операнд. Від латинського слова Uno. що означає "один".

Це операції інкремента і декремента (або збільшення і зменшення). Оператори цих операцій виглядають відповідно так: ++ і -. Що ж вони роблять? При операції збільшення значення операнда збільшується на 1, а при операції зменшення - зменшується на 1.

Припустимо, є змінна х. Ми хочемо застосувати до неї операцію інкремента. Можливо, з огляду на наші минулі знання і отримані сьогодні на початку уроку, ми б написали так:






х = х + 1 або х + = 1.

Але якщо ви точно впевнені, що змінна ваша буде змінюватися в більшу або меншу сторону тільки на 1, краще буде використовувати інкремент або декремент відповідно. І виглядати це буде так:
х ++ або х--

Операнд може бути цілого або плаваючого типу. У будь-якому випадку він буде збільшуватися (зменшуватися) на одиницю. Тип результату відповідає типу операнда. Існує дві форми розглянутих операцій: префиксная і Постфіксний. Якщо оператори ++ або - записані після змінної (так, як написано вище) - це Постфіксний форма. При цьому послідовно відбуваються такі дії:
  • старе значення змінної зберігається для використання в подальшому вираженні, в якому зустрілася ця змінна;
  • і тільки ПІСЛЯ цього її значення ВІДРАЗУ змінюється на 1.

Якщо ці оператори записані перед змінної, ось так:
++х або --х,
то це префиксная форма. При цьому послідовність дій така:
  • СПОЧАТКУ змінна змінюється на 1;
  • і тільки після цього використовується у виразі.

На прикладі буде зрозуміліше. Розглянемо його:
int t = 1, z;
z = (t ++) * 5;

На початку відбувається множення t * 5, а потім збільшення t. В результаті вийде z = 5, t = 2.
int s = 2, f;
f = (++ s) / 3;

На початку значення s збільшується, а потім використовується в операції ділення. В результаті отримаємо s = 3, f = 1.

Зверніть увагу!
  • Коли інкремент або декремент виконуються як абсолютно окремий від інших виразів оператор, то префиксная і Постфіксний форма призводять до однакового результату, тобто, при такому використанні немає ніякої різниці, де ми пишемо оператор.
  • Не можна використовувати в операції інкремента або декремента складний операнд, який представляє собою вираження. Можна тільки просту змінну. Написати ++ (у-1) буде помилкою.

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

2. Визначте значення кожної змінної після операції, якщо на початку операції всі змінні мають значення рівне 5:
  • p * = x ++
  • q / = ++ x
  • w = (- x) + (w--)
  • k + = ((- x) -) + 10






Схожі статті