Составной оператор (блок)
Для того, чтобы несколько операторов можно было использовать там, где ожидается один, предусмотрен составной_оператор (назы- ваемый также блоком):
составной_оператор: { список_описаний список_операторов }
список_описаний: описание описание список_описаний
список_операторов: оператор оператор список_операторов
Если какой-либо идентификатор из списка_описаний ранее был описан, более внешнее описание теряет силу до конца блока, после чего оно снова начинает действовать.
Все инициализации автоматических и регистровых переменных выполняются при каждом входе в блок через его начало. В настоящий момент можно (правда, это порочная практика) передавать управление внутрь блока; в таком случае инициализации не выполняются. Инициализации статических переменных выполняются только один раз, когда начинается выполнение программы. Описания extern внутри блока память не резервируют, поэтому инициализация таких переменных не допускается.