Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.doc
Скачиваний:
47
Добавлен:
12.04.2015
Размер:
4.91 Mб
Скачать

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

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

Для представления управляющего кода ASCII – символами используется обратная наклонная черта (\) с восьмеричными или шестнадцатеричными числами. В этом случае длина строки составляет для восьмеричных кодов – 3 символа, для шестнадцатеричных кодов – любое число символов, при условии, что данное значение лежит в допустимом для типа данных char диапазоне. Большие значения ведут к появлению ошибки компиляции "Numeric constant too large" ("числовая константа слишком велика"). Например, восьмеричное число \777 больше максимально допустимого значения \377, и вызовет генерирование ошибки. Первое же невосьмеричное или нешестнадцатеричное значение, встреченное в восьмеричной или шестнадцатеричной управляющей последовательности, означает конец данной последовательности.

Примеры управляющих последовательностей приведены в талице 2.1.

Таблица 2.1 – Примеры управляющих последовательностей

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

Значение

Символ

Выполняемая функция

\a

0x07

BEL

Звуковой сигнал

\b

0x08

BS

Забой (шаг назад)

\f

0x0C

FF

Прогон страницы

\n

0x0A

LF

Новая строка

\r

0x0D

CR

Возврат каретки

\t

0x09

HT

Горизонтальная табуляция

\v

0x0B

VT

Вертикальная табуляция

\\

0x5c

\

Обратная наклонная черта

\'

0x27

'

Одинарная кавычка (апостроф)

\"

0x22

"

Двойная кавычка

\?

0x3F

?

Вопросительный знак

\O

Любое

O =

Строка до трех восьмеричных цифр

\xH, \XH

Любое

H =

Строка шестнадцатеричных цифр

Строковые литералы

Строковые литералы, известные также как строковые константы, образуют специальную категорию констант, используемых для работы с фиксированными последовательностями символов. Строковый литерал есть тип данных array of char и класс памяти static, записываемый как последовательность произвольного количества символов, заключенных в двойные кавычки:

"This is literally a string!" /* "Это строковый литерал!" */

Нулевая (пустая) строка записывается как "". Если строковые литералы имеют большое количество символов, не умещающихся на одной строке, то можно с помощью символа наклонной черты влево (\) переносить символы строкового литерала на следующую строку, т.е. выполнить «склеивание» этих строк. В этом случае символ наклонной черты влево (обратный слеш) и символ новой строки (Enter) пpи синтаксическом анализе отбрасываются, что позволяет рассматривать две части строкового литерала как единое целое, Например:

"Borland \

International"

будет рассматриваться, как

"Borland International".

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

"\t\t\"Имя \\\\tАдрес\n\n

распечатается функцией printf следующим образом:

"Имя "\ Адрес

Слову "Имя" будет предшествовать два символа табуляции; слову "Адрес" предшествует один символ табуляции. Строка заканчивается двумя символами новой строки. Последовательность \" обеспечивает вывод внутренних кавычек.

Строковый литерал хранится в памяти как заданная последовательность символов, плюс конечный пустой символ ('\0'), означающий конец строки. Нулевая строка хранится в виде одного символа '\0'.

Не следует путать '\0', '0' и "0". Первое – символьный литерал, соответствующий символу с кодом 0. Второе – такой же литерал, но обозначающий цифру 0, ее код в ASCII-кодировке 48. Третий – это строковый литерал, содержащий два символа, цифру 0 и нуль-терминатор '\0'.

На фазе лексического анализа соседние строковые литералы, разделенные только пробелами, конкатенируются (объединяются).

Для расширения строковой константы за границы строки в качестве символа продолжения можно использовать обратную наклонную черту (\):

put("В действительности \

это однострочная строка символов");