Составные операторы (блоки)

We use cookies. Read the Privacy and Cookie Policy

Составные операторы (блоки)

     "Составной оператор" представляет собой два или более операторов, объединенных с помощью фигурных скобок; он называется также "блоком". В нашей программе размер обуви 2 мы использовали такой оператор, чтобы иметь возможность включить в оператор while несколько простых операторов. Сравните между собой фрагменты программы:

/* фрагмент1 */

index = 0;

while (index ++  < 10) sam = 10 * index +  2;

printf(" sam = %d ", sam);

 /* фрагмент2*/

index = 0;

while(index ++  < 10) {

sam = 10*index + 2;

printf(" sam = %d ", sam);

}

     В фрагменте 1 в цикл while включен только оператор присваивания. (При отсутствии фигурных скобок область действия оператора while распространяется от ключевого слова while до следующего символа "точка с запятой".) Печать данных будет произведена только один раз - после завершения цикла.

     В фрагменте 2 наличие фигурных скобок гарантирует, что оба оператора являются частью цикла while, и печать результатов будет изводиться на каждом шаге работы цикла. Весь составной оператор рассматривается как один оператор, являющийся составной частью оператора while.

 

                                                        РИС. 5.7. Цикл while с составным оператором

     Давайте опять посмотрим на фрагменты, содержащие цикл while, и обратим внимание на то, как мы использовали отступы от поля в строках для выделения тела циклов while. Для компилятора отступы в строке не имеют никакого значения; решения вопроса о том, как интерпретировать наши инструкции, он использует фигурные скобки и свое "знание" правил формирования структуры цикла while. Отступы в строках предназначены для нас, чтобы с первого взгляда можно было понять, как устроена программа. Ранее мы показали вам один популярный способ расстановки фигурных скобок, служащий для указания блока или составного оператора. Другой, тоже довольно распространенный способ выглядит следующим образом

while(index++ < 10) {

 sam = 10 * index + 2;

printf(" sam = %d ", sam);

}

     Этот способ акцентирует внимание на том, что данные операторы образуют блок, в то время как способ, обсуждавшийся выше, указывает на принадлежность блока оператору while. Заметим снова, что поскольку дело касается компилятора, обе формы являются абсолютно идентичными. Подводя итоги, скажем, применяйте отступы от поля в строках, чтобы сделать структуру программы наглядной.