Читаем C++ полностью

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

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

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

<p>9.8 Оператор Break</p>

Оператор

break ;

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

оператор, следующий за завершенным.

<p>9.9 Оператор Continue</p>

Оператор

continue ;

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

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

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

<p>9.10 Оператор Return</p>

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

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

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

<p>9.11 Оператор Goto</p>

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

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

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

<p>9.12 Помеченные операторы</p>

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

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

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

<p>9.13 Пустой оператор</p>

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

;

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

<p>9.14 Оператор описание</p>

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

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

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

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

<p>10. Определения функций</p>

Программа состоит из последовательности описаний. Код (текст программы) функции может быть задан только вне всех блоков и внутри описаний классов. Определения функций имеют вид

определение_функции: спецификаторы_описания opt описатель_функции инициализатор_базового opt тело_функции

Спецификаторы_описания register, auto, typedef не могут использоваться внутри описания класса (#8.5), а friend и virtual могут использоваться только там. Описатель функции – это описатель «функции, возвращающей ...» (#8.4).Формальные параметры находятся в области видимости самого внешнего блока тела_функции. Описатели функции имеют вид

описатель_функции:

описатель ( список_описаний_параметров )

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

Тело функции имеет вид

тело_функции: составной_оператор

Вот простой пример полного определения функции:

int max(int a, int b, int c) (* int m = (a « b) ? a : b; return (m » c) ? m : c; *)

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

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

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT