656___________________________________________Глава 11

ющей переменной (счетчиком), которая изменяется при каждом выполнении тела
цикла. Повторение завершается, когда управляющая переменная достигает задан-
ного значения.

Синтаксис структуры for:

for (выражение!; выражение2; выражениеЗ) оператор;

где выражение! задает начальное значение переменной, управляющей циклом,
выражепие2 является условием продолжения цикла, а выражениеЗ изменяет
управляющую переменную.

Структура for работает следующим образом. Сначала выполняется выраже
ние1 (оно может состоять и из ряда выражений, разделенных запятой т.е. мож(
использоваться операция последования — см. раздел 11.7.7). Это выражение зад.
ет начальные значения переменной (или переменных) цикла. Затем проверяете
выражение2 — условие продолжения цикла. Если условие истинно (возвращав
true — ненулевое значение), то выполняется тело цикла — оператор, записанны:

в структуре for. После завершения тела цикла выполняется выражениеЗ, опреде
ляющее обычно изменение переменной цикла. Затем опять проверяется услови'
записанное как выражение2, и при истинности этого условия выполнение цикл
продолжается. Как только в каком-нибудь цикле выражение2 вернет false (нуле
вое значение), цикл прерывается и управление передается оператору, расположе!;

ному следом за структурой for.

Приведем примеры использования цикла for. Следующие операторы вычисли
ют максимальное значение и сумму элементов, расположенных в массиве цель--
чисел Data размерностью 10:

int Max, Sum;

Мах = Sum = Data[0];

for(int i = 1; i < 10; i++)
{
if (Data[i] > Max) Max = Data[i];

Sum += Data [i] ;

}

Здесь первое выражение в структуре for вводит целую переменную i, являю
щуюся счетчиком циклов, и инициализирует ее значением 1. Второе выражение
проверяет условие завершения цикла. В данном случае цикл должен завершиться
когда переменная i, используемая в теле цикла как индекс массива, примет значе
ние 9. Третье выражение структуры for увеличивает после каждого выполнения
цикла значение i на 1 с помощью операции инкремента.

В данном случае переменная i объявлена в заголовке структуры for. Значит ее
область действия только эта структура. После завершения циклов переменная i
удаляется из памяти.

При использовании компилятора ВСС32.ЕХЕ, запускаемого из командной
строки, подобное уничтожение локальной переменной, объявленной в цикле, мож
но отменить опцией -Vd. Но вряд ли это имеет смысл делать.

Теперь рассмотрим пример использования в структуре for операции запятая (см.
раздел 11.7.7). Пусть в приведенном выше примере нам надо найти только сумму эле-
ментов массива. Тогда, если объявить переменные i и Sum до начала цикла, собствен
но цикл можно весь разместить в заголовке структуры for:

int Sum,i;

for (Sum = Data [О], i =1; i < 10; Sum += Data [i++]);

В этом примере первое выражение структуры for включает в себя два операто-
ра, разделенных операцией запятая и задающих начальные значения переменной
Sum, накапливающей сумму, и переменной цикла i. Третье выражение структуры
for объединяет в одном операторе формирование суммы и постфиксный инкремент