Объявление переменных внутри цикла for

Содержание

С99 расширяет возможности цикла for, разрешая объявление одной или нескольких переменных в части инициализации цикла. Область видимости переменной, объявленной таким способом, ограничена блоком программы, управляемым выражением for. To есть переменная, объявленная внутри цикла for, будет локализована внутри этого цикла. Эта возможность появилась в языке С потому, что управляющая переменная цикла for часто необходима только внутри этого цикла. А так как эта переменная локализована внутри цикла, то удается избежать ненужных побочных эффектов.

Вот пример, в котором переменная объявляется в части инициализации цикла for:

#include <stdio.h>

int main(void)
{
  / объявить i внутри for
  for(int i=0; i < 10; i++)
    printf("%d ", i);

  return 0;
}

Здесь переменная i объявляется внутри цикла for, а не до начала его работы.

Как уже говорилось, переменная, объявленная внутри цикла for, локализуется внутри этого цикла. Проанализируйте следующую программу. Обратите внимание, что переменная i объявляется дважды: в начале main() и внутри цикла for.

#include <stdio.h>

int main(void)
{
  int i = -99;

  / объявить i внутри for
  for(int i=0; i < 10; i++)
    printf("%d ", i);

  printf("\n");
 
  printf("Значение i равно: %d", i); / выводит -99

  return 0;
}

Эта программа выводит следующее:

0 1 2 3 4 5 6 7 8 9
Значение i равно -99

Как показывает вывод, как только заканчивается цикл for, заканчивается и область видимости переменной i, объявленной внутри этого цикла. Таким образом, последнее выражение printf() выводит -99, то есть значение i, объявленное в начале main().

Возможность объявлять управляющие переменные внутри цикла for, уже довольнотаки долгое время имеется в языке C++, и теперь такая возможность используется достаточно широко. Есть надежда, что большинство С-программистов будут делать то же самое.