Операторы инкремента (++), декремента (—). Составные операторы присваивания (+=, -=, …)

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


Содержание



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'

   


Связанные темы