Описания
Все переменные должны быть описаны до их использования, хотя некоторые описания делаются неявно, по контексту. Опи- сание состоит из спецификатора типа и следующего за ним списка переменных, имеющих этот тип, как, например,
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;
Если рассматриваемая переменная является внешней или статической, то инициализация проводится только один раз, согласно концепции до начала выполнения программы. Инициали- зируемым явно автоматическим переменным начальные значения присваиваются при каждом обращении к функции, в которой они описаны. Автоматические переменные, не инициализируемые яв- но, имеют неопределенные значения, (т.е. мусор). Внешние и статические переменные по умолчанию инициализируются нулем, но, тем не менее, их явная инициализация является признаком хорошего стиля. Мы продолжим обсуждение вопросов инициализации, когда будем описывать новые типы данных.