Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PYaVU_s.doc
Скачиваний:
44
Добавлен:
24.02.2016
Размер:
665.09 Кб
Скачать
    1. Goto и помеченные операторы

Синтаксис:

goto <name>;

.

.

.

<name>: <statement>

Выполнение:

Оператор goto передает управление непосредственно на оператор, помеченный <name>. Помеченный оператор выполняется сразу после выполнения оператора goto. Если оператор с данной меткой отсутствует или существует более одного оператора, помеченных одной и той же меткой, то это приводит к ошибочному результату. Метка оператора имеет отношение только к оператору goto. Если помеченный оператор встречается в любом другом контексте, то он выполняется без учета метки.

Пример

if (errorcode>0)

goto exit;

.

.

.

exit:return (errorcode);

В примере оператор goto передает управление на оператор, помеченный меткой exit, когда происходит ошибка.

Формат меток

Метка - это простой идентификатор, синтаксис которого описан в разделе 2.4. Каждая метка должна быть отлична от других меток в той же самой функции.

    1. Оператор if

Синтаксис:

if (<expression>)

{

<statement 1>

}

[else

{

<statement 2>

}]

Выполнение:

Тело оператора if выполняется селективно, в зависимости от значения выражения <expression>. Сначала вычисляется выражение. Если значение выражения истина (не нуль), то выполняется оператор <statement 1>. Если выражение ложно, то выполняется оператор <statement 2>, непосредственно следующий за ключевым словом else. Если выражение <expression> ложно и предложение else ... опущено, то управление передается на выполнение оператора, следующего за оператором if.

Пример

if (i>0)

y=x/i;

else

{

x=i;

y=f(x);

}

В примере выполняется оператор y=x/i;, если i больше нуля. Если i меньше или равно нулю, то значение i присваивается переменной x и возврат функции f(x) присваивается переменной y.

Вложения

Си не поддерживает оператор "else if", но тот же самый эффект достигается посредством сложенных операторов if. Оператор if может быть вложен в предложение if или предложение else другого оператора if. Когда операторы if вкладываются, то используются фигурные скобки, чтобы сгруппировать составные операторы, которые проясняют ситуацию.

Если фигурные скобки отсутствуют, то компилятор может принять неверное решение, сочетая каждое else с более близким if, у которого отсутствует else.

Примеры

/****** example 1 ******/

if (i>0) /* without braces */

if (j>i)

x=j;

else

x=i;

/****** example 2 ******/

if (i>0)

{ /* with braces */

if (j>1)

x=j;

}

else

x=i;

В первом примере else ассоциируется с внутренним оператором if. Если i меньше или равно 0, то нет значения, которое присваивается x.

Во втором примере фигурные скобки ограничивают внутренний оператор if и тем самым делают предложение else частью внешнего оператора if. Если i меньше или равно нулю, то значение i присваивается переменной x.

    1. Оператор null

Синтаксис:

;

Выполнение:

Оператор null - это оператор, состоящий только из точки с запятой. Он может появиться в любом месте, где требуется оператор. Когда выполняется оператор null, ничего не происходит.

Пример

for (i=0; i<10; linee [i++]=0);

Такие операторы, как do, for, if, while, требуют, чтобы в теле оператора был хотя бы один оператор. Оператор null удовлетворяет требованиям синтаксиса в случаях, когда не требуется тела оператора. В приведенном примере третье выражение оператора for инициализирует первые 10 элементов массива line нулем. Тело оператора включает оператор null, т.к. нет необходимости в других операторах.

Помеченный оператор null

Оператор null, подобно любому другому Си оператору, может быть помечен меткой. Чтобы пометить объект, который не является оператором, такой как закрывающаяся фигурная скобка составного оператора, можно вставить перед объектом помеченный оператор null.