5.1. Простые и составные инструкции

5.1. Простые и составные инструкции

Простейшей формой является пустая инструкция. Вот как она выглядит:

; // пустая инструкция

Пустая инструкция используется там, где синтаксис С++ требует употребления инструкции, а логика программы – нет. Например, в следующем цикле while, копирующем одну строку в другую, все необходимые действия производятся внутри круглых скобок (условной части инструкции). Однако согласно правилам синтаксиса С++ после while должна идти инструкция. Поскольку нам нечего поместить сюда (вся работа уже выполнена), приходится оставить это место пустым:

while ( *string++ = inBuf++ )

; // пустая инструкция

Случайное появление лишней пустой инструкции не вызывает ошибки компиляции. Например, такая строка

ival = dval + sval;; // правильно: лишняя пустая инструкция

состоит из двух инструкций – сложения двух величин с присваиванием результата переменной ival и пустой.

Простая инструкция состоит из выражения, за которым следует точка с запятой. Например:

// простые инструкции

int ival = 1024; // инструкция определения переменной

ival; // выражение

ival + 5; // еще одно выражение

ival = ival +5; // присваивание

Условные инструкции и инструкции цикла синтаксически требуют употребления единственной инструкции, связанной с ними. Однако, как правило, этого недостаточно. В таких случаях употребляются составные инструкции – последовательность простых, заключенная в фигурные скобки:

if ( ival0 ival1 ) {

// составная инструкция, состоящая

// из объявления и двух присваиваний

int temp = ivalO;

ivalO = ival1;

ival1 = temp;

}

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

Пустая составная инструкция эквивалентна пустой простой. Приведенный выше пример с пустой инструкцией можно переписать так:

while ( *string++ = *inBuf++ )

{} // пустая инструкция

Составную инструкцию, содержащую определения переменных, часто называют блоком. Блок задает локальную область видимости в программе – идентификаторы, объявленные внутри блока (как temp в предыдущем примере), видны только в нем. (Блоки, области видимости и время жизни объектов рассматриваются в главе 8.)