588 Приложение. Обзоры языков
2. Если задано âûðàæåíèå
2
, то оно вычисляется. Если результат равняется 0,
то цикл for завершается. Обычно âûðàæåíèå
2
определяет условие прекра
щения цикла, например J<10.
3. Выполняется îïåðàòîð.
4. Если задано âûðàæåíèå
3
, то оно вычисляется. Обычно это приращение пе
ременной — счетчика цикла, например J++ или просто прибавление 1 к J.
5. Процесс повторяется с шага 2.
Оператор switch. Действие оператора switch подобно многовариантному ветв
лению; часто он называется оператором case. Его синтаксис следующий:
switch(âûðàæåíèå)
{case êîíñòàíòà
1
: ñïèñîê_îïåðàòîðîâ
1
; break;
case êîíñòàíòà
2
: ñïèñîê_îïåðàòîðîâ
2
; break;
case êîíñòàíòà
3
: …;
default: ñïèñîê_îïåðàòîðîâ
n
;}
После того как вычисляется âûðàæåíèå, управление переходит к метке case со
значением константы, равной вычисленному значению выражения, или к опера
тору default, если ни одна константа не совпадает с полученным значением выра
жения.
В данном случае очень важен оператор break, и это является действительно сла
бым местом языка C, поскольку если отсутствует явная передача управления по
сле операторов одной метки case, то будут выполнены операторы и всех последую
щих меток case.
Операторы передачи управления. В языке C существуют четыре оператора,
передающих управление, — это break, continue, goto и return.
Оператор break вызывает завершение ближайшего к нему из операторов while,
do, for или switch, в которые он вложен. По существу, это оператор goto, передаю
щий управление первому оператору, который следует за составным оператором,
содержащим оператор break. Как отмечалось ранее, этот оператор очень важен для
предотвращения последовательного продолжения выполнения ветвей case в опе
раторе switch.
Оператор continue передает управление в конец тела цикла непосредственно
содержащего его оператора for, do или while. Это приводит к тому, что программа
переходит к следующей итерации соответствующего цикла.
Оператор goto ìåòêà передает управление оператору, помеченному указанной
меткой. Как и в языке FORTRAN, это слабый оператор, его использование необя
зательно и лучше им вообще не пользоваться. Вложенные в операторы цикла опе
раторы break и continue обеспечивают все необходимые механизмы передачи
управления.
Оператор return осуществляет возврат из процедур. Если процедура вызыва
лась как функция, то синтаксис выглядит следующим образом: return âûðàæåíèå.
Команды препроцессора. Ключевые слова define, ifdef, ifndef, include, if, undef
и else, начинающиеся с символа #, являются командами или директивами препро
цессора и не имеют никаких других функций в языке C. В старых версиях транс
лятора C символ # обязательно должен был являться первым символом в строке,
однако в большинстве современных трансляторов перед этим символом допуска
ются пробелы.