Оператори інкременту (++), декременту (–). Складені оператори присвоювання (+=, -=, …)

Оператори інкременту (++), декременту (– –). Складені оператори присвоювання (+=, -=, …)


Зміст


1. Які особливості використання операторів інкременту та декременту в програмах на C++?

У мові C++ визначено два оператора, що здійснюють збільшення або зменшення цілочисельної величини на 1:

  • оператор ++ – інкремент;
  • оператор ––  – декремент.

Ці оператори є унарними. Вони вимагають одного операнда. Ці оператори можуть розміщуватись до та після операнда.

Оператор інкременту ++ збільшує значення операнду на 1. Наприклад, рядок

x = x + 1;

є аналогічний рядку

x++;

або

++x;

Так само, оператор декременту зменшує значення операнду на 1. Наприклад, рядок

x = x – 1;

можна записати

x--;

або

--x;

 

2. Приклади застосування операторів інкременту (++) та декременту (––)

Фрагмент коду, що пояснює роботу операторів ++ та ––.

// оператори інкременту (++) та декременту (--)
int a, b;

a = 10;
b = a++; // b = 10; a = 11

a = 10;
b = ++a; // b = 11; a = 11

a = 10;
b = a--; // b = 10; a = 9

a = 10;
b = --a; // b = 9; a = 9

 

3. Яка відмінність між виразом ++x (––x) та виразом x++ (x––)?

Відмінність між префіксною та постфіксною формами операторів інкременту (++) та декременту (––) проявляється, коли ці оператори беруть участь в операції присвоювання.

Якщо вираз ++x використовується в операторі присвоєння

y = ++x;

то він працює у такому порядку:

  • спочатку значення x збільшується на 1, а потім результуюче значення присвоюється змінній y.

Якщо виконати вираз

y = x++;

то він працює у такому порядку:

  • спочатку змінній y присвоюється значення x, а потім значення x збільшується на 1.

 

4. Які складені оператори присвоювання використовуються в C++?

У мові C++ можна використовувати складені оператори присвоювання. Ці оператори є зручними, коли в програмі використовуються довгі імена змінних. У цьому випадку відпадає необхідність зайвий раз вводити довге ім’я змінної.

Загальний вигляд складеного оператора присвоювання наступний:

ім‘я_змінної operation= вираз;

де

  • ім‘я_змінної – безпосередньо ім‘я змінної, якій присвоюється значення;
  • operation – одна з операцій +, , *, /, %, &, |, ^, <<, >>.

Мова C++ підтримує такі складені оператори присвоювання:

+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

 

5. Приклади використання складених операторів присвоювання
// складені оператори присвоювання
float x, y;
int a, b;

// +=, -=
a = 8;
b = 5;
a += b; // a = a + b = 13
b -= 4; // b = b - 4 = 1

// *=, /=
x = 4;
y = 5;
x *= y; // x = x * y = 4 * 5 = 20
y /= 2.5; // y = y / 2.5 = 2.0

// &=, |=
a = 8;
b = 3;
a &= b + 5; // a = a & b + 5 = a & (b+5) = 8
a |= b; // a = a | b = 11

// >>=, <<=
a = 34;
a >>= 1; // a = a >> 1 = 17
a = 6;
a <<= 3; // a = a << 3 = 48

// %=
b = 15;
b %= 6; // b = b % 6 = 3

 

6. Чи можна застосовувати операції інкременту та декременту до типу bool?

У Visual C++ тільки операцію інкременту (++) можна застосовувати до типу bool.

Якщо використовувати операцію декременту (––) до типу bool, тоді компілятор видає повідомлення про помилку:

Not allowed on operand of type 'bool'

Приклад використання операції інкременту над змінною типу bool

bool b;
b = false;
b++; // b = true
b++; // b = true

 

7. Чи можна застосовувати операції інкременту та декременту до типів з плаваючою комою (float, double, long double)?

Зі змінними типів з плаваючою комою операції інкременту та декременту працюють так само, як і зі змінними цілого типу.

Приклад.

float x;
x = 24.5;
x--; // x = 23.5


 

8. Чи можна застосовувати операції інкременту та декременту до символьного типу (char)?

Оскільки, символьний тип char неявно відноситься до цілочисельних типів, то до змінних символьного типу можна застосовувати операції інкременту та декременту.

Приклад.

char c;

c = 'x';
c++; // c = 'y'
c = '6';
--c; // c = '5'

 


Зв’язані теми