8.3. Операторы

 

Операторы делятся на 3 группы:

·                  Операторы-выражения;

·                  Пустые операторы и блоки;

·                  Операторы, начинающиеся с ключевого слова;

Перед каждым оператором может находиться метка (имя метки любой идентификатор) или список меток разделенных «:» двоеточием.

 

Оператор-выражение

Любое выражение может быть преобразовано в оператор добавлением к нему точки с запятой, т. е. оператор-выражение имеет вид

 

Выражение;

 

Где выражение - любое выражение.

Оператор присваивания – это частный случай оператора-выражения.

 

Пустой оператор

Пустой оператор обозначается точкой с запятой;его выполнение не дает никаких результатов.

Используют его чаще всего в тех случаях, когда логически не требуется выполнение никаких действий, но в соответствии с правилами синтаксиса присутствие оператора обязательно. Например:

 

int a=0,b=5;

if  (a == b) ; elseb=a;/*в случае истинности выражения a == b ничего не делать иначе b=a*/

 

 

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

Имеет следующий вид

 

{

         определения и описания

         операторы

}

 

Составной оператор  используется в следующих случаях:

·        чтобы сгруппировать несколько логически связанных операторов в один оператор

·        в качестве тела функции

·        для ограничения видимости определенной части программы.

 

Во время выполнения составного оператора переменные, описанные вне данного блока, с идентичными именами будут недоступны в этом блоке.

 

 

Пример:

 

#include <stdio.h>

void main()

{

char c=’i’;

{

char c=’h’;

printf(“%c”,c);

}

printf(“%c”,c);

}

 

в результате выполнения этой программы будет выведен на экран hi.

 

Оператор перехода

 

Goto метка;

 

Выполнение оператора goto приводит к переходу на выполнение инструкции обозначенной меткой. Диапазон действия метки функция в которой она описана данная метка.

 

 

 

Условный оператор

 

Этот оператор имеет 2 вида

1  вид

if (выражение) оператор1;

 

2 вид

if (выражение) оператор1;

                   else оператор2;

 

Выражение является условием. Если его значение не равно нулю (истинно), то выполняется оператор1, в противном случае, если условие равно 0 (ложно), то оператор if в первом случае заканчивается, а во втором выполняется оператор2.

Синтаксически как оператор1 так и оператор2 должны быть единственными операторами. Следовательно, если в этом месте должно быть более одного оператора, то эти операторы необходимо объединить в один оператор, заключив их в фигурные скобки, т. е. используя, составной оператор

 

Пример

if (a==b) {a=b;b=4;

}

 

То, что часть else в конструкции if - else является необязательной, приводит к двусмысленности в случае, когда else опускается во вложенной последовательности операторов if. Эта неоднозначность разрешается обычным образом - else связывается с ближайшим предыдущим if, не содержащим else.

т. е.

 

if (e1) if (e2) s1;

else s2;

    (*)

 

Будет интерпретироваться как

 

if (e1)

if  (e2)

s1;

else  s2;

/*else относится ко второму if*/

 

Если нам требуется, чтоб в выражение (*) else  относился к первому  if, то можно, используя, пустой оператор, переписать его как

if (e1) if (e2)

s1;

else;

else

s2;

 

или использовать фигурные скобки

 

if (e1)

{if  (e2)s1;}

else

s2;

 

К оглавлению

Назад к разделу "8.2. Операции"

Вперед к разделу "8.4. Циклы"