Основы программирования

Операции "увеличить на", "домножить на" и т.п.


В большинстве алгоритмов при выполнении операции сложения чаще всего переменная-результат операции совпадает с первым аргументом:

x = x + y;

Здесь складываются значения двух переменных x и y, результат помещается в первую переменную x. Таким образом, значение переменной x увеличивается на значение y. Подобные фрагменты встречаются в программах гораздо чаще, чем фрагменты вида

x = y + z;

где аргументы и результат различны. Рассмотрим, например, фрагмент программы, вычисляющий сумму элементов массива вещественных чисел (забегая вперед, мы используем в нем конструкцию цикла "пока"):

double a[100]; double s; int i; . . . s = 0.0; i = 0; while (i < 100) { s = s + a[i]; ++i; }

Здесь сумма элементов массива накапливается в переменной s. В строке

s = s + a[i];

к сумме s прибавляется очередной элемент массива a[i], т.е. значение s увеличивается на a[i]. В Си существует сокращенная запись операции увеличения:

s += a[i];

Оператор += читается как "увеличить на". Строка

x += y; // Увеличить значение x на y

эквивалентна в Си строке

x = x + y; // x присвоить значение x + y,

но короче и нагляднее.

Оператор вида ?= существует для любой операции ?, допустимой в Си. Например, для арифметических операций +, -, *, /, % можно использовать операции

+= увеличить на -= уменьшить на *= домножить на /= поделить на %= поделить с остатком на

к примеру, строка

x *= 2.0;

удваивает значение вещественной переменной x.

Операторы вида ?= можно использовать даже для операций ?, которые записываются двумя символами. Например, операции логического умножения и сложения (см. раздел 1.4.4) записываются в Си как && (двойной амперсенд) и || (двойная вертикальная черта). Соответственно, логические операторы "домножить на" и "увеличить на" записываются в виде &&= и ||=, например,

bool x, y; x &&= y; // эквивалентно x = x && y; x ||= y; // эквивалентно x = x || y;



Содержание раздела