Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

9.4.4. Складені оператори присвоєння

У мові програмування C++ передбачено спеціальні складені оператори присвоєння, у яких об'єднано присвоєння з ще однією операцією. Почнемо з прикладу і розглянемо таку настанову:

х = х + 10;

Використовуючи складений оператор присвоєння, його можна записати у такому вигляді:

х += 10;

Пара операторів += слугує вказанням компіляторові присвоїти змінній х суму поточного значення змінної х і числа 10. Цей приклад є ілюстрацією того, що складені оператори присвоєння спрощують програмування певних настанов присвоєння. Окрім того, вони дають змогу компіляторові згенерувати ефективніший код.

Складені версії операторів присвоєння існують для всіх бінарних операторів (тобто для всіх операторів, які працюють з двома операндами). Таким чином, при такому загальному форматі бінарних операторів присвоєння

змінна = змінна ор| вираз;

загальна форма запису їх складених версій має такий вигляд:

змінна ор| = вираз;

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

А ось ще один приклад. Настанова

х = х – 100;

аналогічна такій:

х –= 100;

Обидві ці настанови присвоюють змінній х її колишнє значення, зменшене на 100. Складені оператори присвоєння можна часто натрапити у професійно написаних С++-програмах, тому кожен С++-програміст повинен бути з ними ознайомлений.

9.4.5. Оператор "кома"

Не менш цікавим, ніж описані вище оператори, є такий оператор мови програмування C++, як "кома". Ви вже бачили декілька прикладів його використання в циклі for, де за допомогою "коми" було організовано ініціалізацію відразу декількох змінних. Але оператор "кома" також може складати частину виразу. Його призначення у цьому випадку – зв'язати певним чином декілька виразів. Значення перерахунку виразів, розділених між собою комами, визначається у цьому випадку значенням крайнього справа виразу. Значення інших виразів відкидаються. Отже, значення виразу справа стає значенням всього виразу-списку. Наприклад, у процесі виконання цієї настанови

var = (count=19, incr=10, count+1);

змінній count спочатку присвоюється число 19, змінною incr – число 10, а потім до значення змінної count додається одиниця, після чого змінній var присвоюється значення крайнього справа виразу, тобто count+1, яке дорівнює 20. Круглі дужки тут обов'язкові, оскільки оператор "кома" має нижчий пріоритет, ніж оператор присвоєння.

Щоб зрозуміти призначення оператора "кома", спробуємо виконати таку програму:

Код програми 9.13. Демонстрація механізму використання оператора "кома"

#include <iostream> // Для потокового введення-виведення

using namespace std; // Використання стандартного простору імен

int main()

{

int izm, jzm;

jzm = 10;

izm = (jzm++, jzm+100, 999+jzm);

cout << izm;

getch(); return 0;

}

Ця програма виводить на екран число 1010. І ось чому: спочатку змінній jzm присвоюється число 10, потім змінна jzm інкрементується до 11. Після цього обчислюється вираз jzm+100, який ніде не застосовується. Нарешті, виконується додавання значення змінної jzm (вона, як і раніше, дорівнює 11) з числом 999, що в результаті дає число 1010.

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