ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 2) онлайн

Инкремент

Операция, которую мы сейчас рассмотрим, является более специфичной, нежели предыдущие. При программировании вам часто приходится иметь дело с увели- чением какой-либо величины на единицу. Это можно сделать «в лоб», используя оператор

count = count + 1; //увеличение count на 1 или с помощью сложения с присваиванием: count += 1;         //увеличение count на 1

Но есть еще один, более сжатый, чем предыдущие, способ: ++count;             //увеличение count на 1

Операция ++ инкрементирует, или увеличивает на 1, свой операнд.

Префиксная и постфиксная формы

Знак операции инкремента может быть записан двояко: в префиксной форме, когда он расположен перед своим операндом, и в постфиксной форме, когда опе- ранд записан перед знаком ++. В чем разница? Часто инкрементирование пере- менной производится совместно с другими операциями над ней:

totalWeight = avgWeight * ++count;

Возникает вопрос — что выполняется раньше: инкрементирование или умно- жение? В данном случае первым выполняется инкрементирование. Каким обра- зом это определить? Префиксная форма записи и означает то, что инкремент будет выполнен первым. Если бы использовалась постфиксная форма, то сначала бы выполнилось умножение, а затем переменная count была бы увеличена на 1. Рисунок 2.11 иллюстрирует две указанные формы записи.

Рассмотрим пример, в котором используются как префиксная, так и пост- фиксная формы инкрементирования.

// increm.cpp

// применение операции инкрементирования #include  <iostream> using namespace std;

int main() {

int count =10;

cout << "count=" << count << endl;     // вывод числа 10

cout << "count=" << ++count << endl;   // вывод числа 11 (префиксная форма)

cout << "count=" << count << endl;     // вывод числа 11

cout << "count=" << count++ << endl;   // вывод числа 11 (постфиксная форма)

cout << "count=" << count << endl;     // вывод числа 12

return 0;

}

При первом инкрементировании переменной count мы использовали префикс- ную форму для того, чтобы вывести на экран значение переменной, уже увеличен- ное на единицу. Поэтому второй оператор выводит на экран значение 11, а не 10.

Постфиксное инкрементирование, наоборот, действует после вывода на экран значения 11, и только следующий оператор получит значение count, равное 12.

Рис. 2.11. Операция инкремента

 

55