C++ CSS HTML Java JavaScript MySQL Oracle PERL PHP SQL Unix VBScript XHTML XML Сети
Справочное руководство. Операторы.
 
                  
                        9. Операторы

     Операторы выполняются последовательно  во  всех  случаях
кроме особо оговоренных.


                   9.1 Оператор Выражение


     Большинство операторов  является  операторами выражение,
которые имеют вид


  выражение ;


     Обычно операторы выражение являются присваиваниями и вы-
зовами функций.


              9.2 Составной Оператор, или Блок


     Составной оператор (называемый также "блок", что эквива-
лентно) дает  возможность использовать несколько операторов в
том месте, где предполагается использование одного:


  составной_оператор:
      (* список_операторов opt *)

  список_операторов:
      оператор
      оператор список_операторов

     Обратите внимание,  что описание - это вариант оператора
(#9.14).


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

     Есть два вида условных операторов

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


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


                     9.4 Оператор while


     Оператор while имеет вид


  while ( выражение ) оператор


     


                       9.5 Оператор do


     Оператор do имеет вид


  do оператор while ( выражение ) ;


      (#9.3).

                      9.6 Оператор for


     Оператор for имеет вид


 for (оператор_1 выражение_1 opt; выражение_2 opt) оператор_2

     Этот оператор эквивалентен следующему:


  оператор_1
  while ( выражение_1 ) (*
      оператор_2
      выражение_2 ;
  *)


      выполняемую перед каждой итерацией проверку,
по которой производится выход из цикла, если выражение стано-
вится нулем; второе выражение часто задает приращение, выпол-
няемое после каждой итерации.

     Каждое или оба выражения могут быть опущены.  Отсутствие
выражения_1 делает подразумеваемое while-предложение  эквива-
лентым while(1).  Заметьте, что если оператор_2 является опи-
санием, то область видимости описанного имени распространяеи-
ся до конца блока, охватывающего оператор for.


                     9.7 Оператор switch


     Оператор switch  вызывает передачу управления на один из
нескольких операторов в зависимости от значения выражения. Он
имеет вид


  switch ( выражение ) оператор


     Выражение должно  быть  арифметичского или указательного
типа. Любой  оператор внутри оператора может быть помечен од-
ной или более меток case следующим образом:


  case константное_выражение :


     где константное  выражение должно иметь тот же тип что и
выражение-переключатель; производятся обычные  арифметические
преобразования. В одном операторе switch никакие две констан-
ты, помеченные  case,  не могут  иметь  одинаковое  значение.
Константные выражения определяются в #12.


     Также может быть не более чем одна метка вида


  default :

     Когда выполнен оператор switch, проведено вычисление его
выражения и сравнение его с каждой case константой. Если одна
из констант равна значению выражения, то управление передает-
ся на выражение,  следующее за подошедшей меткой case.   Если
никакая case   константа  не соответствует выражению,  и есть
метка default, то управление передается на выражение, которо-
му она предшествует. Если нет соответсвующих вариантов case и
default отсутствует,  то никакой из  операторов  в  операторе
switch не выполняется.

     Метки case  и default сами по себе не изменяют поток уп-
равления, который после задерки идет дальше, перескакивая че-
рез эти метки. Для выхода из switch см. break, #9.8.

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


                     9.8 Оператор break

     Оператор


  break ;

     вызывает завершение выполнения наименьшего охватывающего
оператора while, do, for или switch; управление передается на
оператор, следующий за завершенным.


                    9.9 Оператор continue


     Оператор


  continue ;


     while (...) (* do (* for (...) (*
    ... ... ...
  contin: ; contin: ; contin: ;
  *) *) while (...); *)


     continue эквивалентно goto contin. (За contin: идет пус-
той оператор, #9.13.)


                    9.10 Оператор return


     Возврат из функции в вызывающеую программу осуществляет-
ся с помощью оператора return, имеющего один из двух видов:

  return ;
  return выражение ;


     Первый может   использоваться  только  в  функциях,   не
возвращающих значения,  т.е. в функциях с типом возвращаемого
значения void.    Вторая  форма может использоваться только в
функциях, возвращающих значение; значение выражения возвраща-
ется тому, кто вызывал функцию. Если необходимо, то выражение
преобразуется, как  это делается при инициализации,   к  типу
функции, в которой оно появилось. Обход конца функции эквива-
лентен возврату return без возвращаемого значения.


                     9.11 Оператор goto

     Можно осуществлять безусловную передачу упраления с  по-
мощью оператора

   goto идентификатор ;


     Идентификатор должен быть меткой (#9.12),  расположенной
в текущей функции.  Невозможно передать  управление  в  обход
описания с инициализатором (явным или неявным)  никак,  кроме
передачи управления в обход внутреннего блока  без  захода  в
него.

                  9.12 Помеченные Операторы

     Перед любым оператором может стоять метка, имеющий вид

  идентификатор :


     которая служит  для  описания  идентификатора как метки.
Метка используется только как объект перехода для goto.   Об-
ластью видимости метки является текущая функция, исключая лю-
бой подблок,  в котором был переописан этот же идентификатор.
См. #4.1.


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


     Пустой оператор имеет вид


  ;


     Пустой оператор  используется для помещения метки непос-
редственно перед *) составного оператора или того, чтобы
снабдить такие операторы, как while, пустым телом.


                   9.14 Оператор Описание


     Оператор описание используется для введения нового иден-
тификатора в блоке; он имеет вид


  Оператор_описание:
      описание


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

     Каждая инициализация auto и register переменных произво-
дится каждый раз,  когда  выполняется  их  оператор_описание.
Можно передавать управление в блок,  но не таким путем, кото-
рый приводит к невыполнению инициализаций, см. #9.11. Инициа-
лизации переменных  класса памяти static (#4.4)  производятся
только один раз, когда программа начинает выполняться.

[Назад] [Содержание] [Вперед]

Главная