break;
case 3 : puts("Всего хорошего!");
break;
default : puts("Неправильный выбор, попробуйте еще раз."); break;
}
switch (letter)
{
case 'a' :
case 'e' : printf ("%d является гласной буквой\n", letter); case 'c' :
case 'n' : printf("%d находится в слове \"cane\"\n", letter); default : printf("Всего хорошего.\n");
}
Если letter имеет значение 'а' или 'e', то выводятся все три сообщения, а если 'с' или 'n' — то два последних сообщения. Все прочие значения приводят к выводу только последнего сообщения.
Сводка: переходы в программе
Ключевые слова
Ключевыми словами для переходов в программе являются break, continue и goto.
Общий комментарий
Эти три инструкции — break, continue и goto — заставляют поток управления программы переходить из одного места кода в другое.
Команда break
Команда break может использоваться с любой из трех форм циклов и с оператором switch. Она вынуждает поток управления программы пропустить остаток цикла или оператора switch, который ее содержит, и продолжить выполнение со следующей инструкции после цикла или switch.
Пример
while ((ch = getchar()) !=EOF)
{
putchar(ch); if (ch == ' ')
break; // прекратить выполнение цикла chcount++;
}
848 Приложение Б
Команда continue
Команда continue может использоваться с любой из трех форм циклов, но не с оператором switch. Она заставляет ноток управления программы пропустить оставшиеся операторы в цикле. В случае циклов for и while запускается следующая итерация. В случае цикла do while проверяется условие выхода, а затем, если необходимо, запускается новая итерация.
Пример
while ((ch = getchar()) != EOF)
{
if (ch == ' ')
continue; // перейти к проверочному условию putchar(ch); chcount++;
}
Этот фрагмент кода отображает и подсчитывает непробельные символы.
Команда goto
Оператор goto передает управление оператору, снабженному указанной меткой. Метка отделяется от оператора двоеточием. Имена меток подчиняются правилам, которые регламентируют именование переменных. Помеченный оператор может располагаться как до, так и после goto.
Форма
goto метка; метка : оператор
Пример
top : ch = getchar();
if (ch ! = ' у') goto top;
Раздел V. Стандартная библиотека ANSI С с дополнениями С99 и С11
Библиотека ANSI С классифицирует функции по нескольким группам, с каждой из которых ассоциирован свой заголовочный файл. В этом разделе представлен обзор библиотеки, список заголовочных файлов и краткое описание связанных с ними функций. Некоторые из этих функций (например, часть функций ввода-вывода) обсуждаются более подробно. За полным описанием обращайтесь к документации, сопровождающей вашу реализацию, к справочному руководству или же к онлайновому руководству наподобие http: //www.acm.uiuc. edu/webmonkeys/book/c_guide/.
Диагностика: assert.h
В заголовочном файле assert.h определен макрос assert(). Определение идентификатора NDEBUG перед включением заголовочного файла assert.h делает макрос assert() неактивным. Выражение, используемое в качестве аргумента, обычно является выражением отношения или логическим, которое должно быть истинным в этой точке программы, если программа функционирует корректно. Макрос assert() описан в табл. B.V. 1.
Справочные материалы 849

В стандарте С11 в библиотеку добавлен макрос static_assert, который расширяется до _Static_assert. В свою очередь, _Static_assert представляет собой ключевое слово, которое считается формой объявления. Оно обеспечивает проверку на этапе компиляции, которая применяется следующим образом:
_Static_assert (константное-выражение, строковый-литерал);
Если константное-выражение оценивается как имеющее значение 0, то компилятор выдает сообщение об ошибке, которое включает строковый-литерал. В противном случае никаких действий не предпринимается.
Комплексные числа: complex.h (С99)
В стандарте С99 была добавлена интенсивная поддержка вычислений с комплексными числами, а в стандарте C11 она дополнительно расширена. В реализациях допускается принимать решение о предоставлении типа _Imaginary вдобавок к типу Complex. В стандарте С11 оба эти типа являются необязательными. В стандарте С99 тип _Complex был обязательным, а тип _Imaginary — необязательным. В разделе VIII этого приложения приводится дополнительное обсуждение поддержки комплексных типов. В заголовочном файле complex.h определены макросы, перечисленные в табл. B.V.2.
Таблица 6.V.2. Макросы в complex.h

Реализация комплексных чисел в С, поддерживаемая заголовочным файлом complex.h, существенно отличается от их реализации в C++, поддерживаемой заголовочным файлом complex. Для определения типов комплексных чисел в языке C++ используются классы.
Читать дальше