Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
это то что у меня есть в электронном виде.docx
Скачиваний:
1
Добавлен:
23.04.2019
Размер:
141.72 Кб
Скачать

Управляющие последовательности

Строки и символьные константы могут содержать "управляющие последовательности". Управляющие последовательности это комбинации символов, состоящие из разделительного символа и неграфических символов. Управляющая последовательность состоит из знака обратного деления (\) за которым следует буква или комбинация цифр.

Управляющие последовательности обычно используются для задания каких-либо действий (например, возврат каретки или сдвиг на табуляцию на экране или на принтере) или для литерального представления неграфических символов и символов, имеющих специальное значение (например, двойные цитатные скобки - "). Таблица 2.2 содержит список управляющих последовательностей.

Таблица 2.2. Управляющие последовательности

Управляющая Название

последовательность

\n новая строка

\t горизонтальная табуляция

\v вертикальная табуляция

\b забой

\r возврат каретки

\f смена листа

\a зуммер

\' одинарная цитатная скобка

\" двойная цитатная скобка

\\ обратное деление

\ddd восьмеричное значение символа ASCII

\xddd шестнадцатеричное значение символа ASCII

Если знак обратного деления предшествует символу, которого нет в Таблице 2.2, то знак обратного деления игнорируется, а сам символ воспринимается буквально. Например, \c представляет собой символ "с" в строковом литерале или символьной константе. Однако, использование строчных букв в управляющих последовательностях зарезервировано для будущей стандартизации. Т.о. хотя появления неопределенных управляющих последовательностей и не вызывает проблем сейчас, потом могут возникнуть проблемы мобильности программного обеспечения.

Последовательность \ddd позволяет задавать любой символ ASCII (Стандартный Код США по Обмену Информацией), указывая его восьмеричный код из трех цифр. Аналогично, последовательность \xddd позволяет задавать любой символ ASCII, указывая его шестнадцатеричный код из трех цифр. Например, пробел можно указать как \b, \010 (восьмеричное значение) или \x008 (шестнадцатеричное значение).

В восьмеричных управляющих последовательностях можно использовать только цифры от 0 до 7. Хотя и не нужно использовать все три цифры (как это показано в предыдущем абзаце), нужно указать хотя бы одну. Например, можно задать символ забоя ASCII в восьмеричном представлении, как \10. Аналогично, можно использовать по крайней мере одну цифру в шестнадцатеричной управляющей последовательности, и опустить вторую и третью цифру. Более того, можно задать пробел в шестнадцатеричном представлении, как \x08 или \x8.

Примечание

При использовании в строках восьмеричного или шестнадцатеричного представления управляющих последовательностей более безопасно задавать все три цифры. Если не задать все три цифры в управляющей последовательности, а за ней непосредственно следует восьмеричное или шестнадцатеричное число, то компилятор интерпретирует этот символ, как часть управляющей последовательности. Например, если напечатать строку "\x07Bell", то результатом будет {ell, т.к. \x07B будет интерпретировано, как левая фигурная скобка ASCII ({). Строка \x007Bell (обратите внимание на два ведущих нуля) является корректным представлением символа зуммера, за которым следует слово Bell. Строка \x7Bell вызовет появление диагностического сообщения компилятора, т.к. шестнадцатеричная величина 7BE слишком велика, чтобы поместиться в один байт.

Управляющие последовательности позволяют посылать на экран неграфические управляющие символы. Например, управляющий символ \033 часто используется в качестве первого символа в команде управления терминалом или принтером. Некоторые управляющие последовательности зависят от устройств. Например, вертикальная табуляция и смена листа (\v и \f) никак не скажутся при выводе на экран, но произведут указанное действие на принтере.

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

Символ обратного деления можно также использовать в качестве символа продолжения. Если символ новой строки непосредственно следует за знаком обратного деления, то компилятор игнорирует знак обратного деления и символ новой строки и рассматривает следующую строку текста, как часть предыдущей. Это особенно удобно для задания определений предпроцессора, которые могут занимать более одной строки. В прошлом эта особенность использовалась для создания строковых объектов, которые занимали более одной строки текста. Однако, теперь более предпочтительно использовать конкатенацию строк (см."Строковые литералы") для создания длинных строковых литералов.