Все переменные должны быть описаны до их использования,
хотя некоторые описания делаются неявно, по контексту. Опи-
сание состоит из спецификатора типа и следующего за ним
списка переменных, имеющих этот тип, как, например,
INT LOWER, UPPER, STEP;
CHAR C, LINE[1000];
Переменные можно распределять по описаниям любым обра-
зом; приведенные выше списки можно с тем же успехом записать
в виде
INT LOWER;
INT UPPER;
INT STEP;
CHAR C;
CHAR LINE[1000];
Такая форма занимает больше места, но она удобна для до-
бавления комментария к каждому описанию и для последующих
модификаций.
Переменным могут быть присвоены начальные значения внут-
ри их описания, хотя здесь имеются некоторые ограничения.
Если за именем переменной следуют знак равенства и констан-
та, то эта константа служит в качестве инициализатора, как,
например, в
CHAR BACKSLASH = '\\';
INT I = 0;
FLOAT EPS = 1.0E-5;
Если рассматриваемая переменная является внешней или
статической, то инициализация проводится только один раз,
согласно концепции до начала выполнения программы. Инициали-
зируемым явно автоматическим переменным начальные значения
присваиваются при каждом обращении к функции, в которой они
описаны. Автоматические переменные, не инициализируемые яв-
но, имеют неопределенные значения, (т.е. мусор). Внешние и
статические переменные по умолчанию инициализируются нулем,
но, тем не менее, их явная инициализация является признаком
хорошего стиля.
Мы продолжим обсуждение вопросов инициализации, когда
будем описывать новые типы данных.