C. Бочков - Язык программирования Си для персонального компьютера
Разделители
Разделители из множества символов языка Си используются для различных целей, от организации текста программы до определения указаний компилятору языка Си. Разделители перечислены в таблице 1.1.
Таблица 1.1.
Символ Наименование Символ Наименование , Запятая ! Восклицательный знак . Точка | Вертикальная черта ; Точка с запятой / Наклонная черта вправо (слэш) : Двоеточие Наклонная черта влево(обратный слэш) ? Знак вопроса ~ Тильда ‘ Одиночная кавычка (апостроф) _ Подчеркивание ( Левая круглая скобка # Знак номера ) Правая круглая скобка % Процент { Левая фигурная скобка & Амперсанд } Правая фигурная скобка ^ Стрелка вверх < Знак "меньше" - Знак минус > Знак "больше" = Знак равенства [ Левая квадратная скобка + Знак плюс ] Правая квадратная скобка * Знак умножения (звездочка)Эти символы имеют специальный смысл для компилятора языка Си. Правила их использования описываются в дальнейших разделах руководства. Элементы множества представимых символов, которые не представлены в данном списке (в частности, русские буквы), могут быть использованы только в символьных строках, символьных константах и комментариях.
Специальные символы
Специальные символы предназначены для представления пробельных и неграфических символов в строках и символьных константах. Обычно они используются для спецификации таких действий, как возврат каретки и табуляция для терминалов и принтеров, а также для представления символов, имеющих особый смысл (например, двойная кавычка). Специальный символ состоит из обратного слэша, за которым следует либо буква, либо знаки пунктуации, либо комбинация цифр. В таблице 1.2 приведен список специальных символов языка Си.
В СП ТС шестнадцатеричное значение байта может задаваться не только как х, но и как Х.
В СП ТС, помимо перечисленных специальных символов, имеется еще один: ?—знак вопроса (код Ox3F). Он введен в состав языка Си для совместимости со стандартом ANSI на язык Си. Стандарт ANSI предусматривает использование пары знаков вопроса (??) в качестве признака последовательности, представляющей какой-либо символ, который может не иметь представления на клавиатуре терминала. Если же необходимо просто записать подряд два знака вопроса (например, в символьной строке), следует записать их так: ??. В СП ТС, однако, не реализованы последовательности, начинающиеся знаками ??, поэтому использование специального символа ? необязательно.
Таблица 1.2.
Специальный символ Шестнадцатеричное значение в коде ASCII Наименование n ОА Новая строка t 09 Горизонтальная табуляция v 0В Вертикальная табуляция b 08 Забой г OD Возврат каретки f ОС Новая страница а 07 Звуковой сигнал ’ 2С Апостроф " 22 Двойная кавычка \ 5C Обратный слэш ddd Байтовое значение в восьмеричном представлении xdd Байтовое значение в шестнадцатеричном представленииПримечание. При работе с текстовым редактором ввод каждой строки завершается нажатием клавиши ENTER (ВВОД). Фактически при этом в текст вставляются два символа: возврат каретки и новая строка (с шестнадцатеричными значениями 0D и 0А в коде ASCII). Однако стандартные библиотечные функции ввода и вывода текстовой информации рассматривают эту пару символов как один символ — символ новой строки с шестнадцатеричным значением 0А. Этот символ представляется в символьных константах и символьных строках как n. При чтении текстовой строки стандартные библиотечные функции заменяют упомянутую пару символов единственным символом новой строки, а при записи символа новой строки добавляют перед ним символ возврат каретки.
Если обратный слэш предшествует символу, не входящему в приведенный список, то обратный слэш игнорируется, а символ представляется обычным образом. Например, сочетание h в строковой или символьной константе представляет символ h.
Конструкция ddd позволяет задать произвольное байтовое значение как последовательность от одной до трёх восьмеричных цифр. Конструкция xdd позволяет задать произвольное байтовое значение как последовательность от одной до двух шестнадцатеричных цифр, а для версии 5.0 СП MSC – до трех шестнадцатеричных цифр. Например, символ забой в коде ASCII может быть задан как 10 или х08. Нулевой код может быть задан как или х0. В восьмеричном представлении байта могут быть заданы только восьмеричные цифры, причем по крайней мере одна цифра должна быть задана. Например, символ забой может быть задан как 10. Аналогично, в шестнадцатеричном представлении байта должна быть задана по крайней мере одна шестнадцатеричная цифра. Так, шестнадцатеричное представление символа забой может быть задано и как х08, и как х8.
Примечание. Если восьмеричное или шестнадцатеричное представление байта используется в составе строки, то рекомендуется полностью задавать все цифры представления. В противном случае, если символ, непосредственно следующий за представлением, случайно окажется восьмеричной или шестнадцатеричной цифрой, он будет интерпретироваться как часть этого представления. Например, в версии 4.0 СП MSC строка х7Веll при выводе на печать будет выглядеть как {ell, поскольку х7В проинтерпретируется как код левой фигурной скобки. Строка х07Ве11 будет правильным представлением кода звукового сигнала с последующим словом Bell.
В СП ТС разбор конструкций, представляющих байтовое значение, реализован не вполне корректно; так, запись "1234" считается ошибочной, хотя она представляет восьмеричное значение 123 и символ '4'.
Специальные символы позволяют посылать неграфические управляющие последовательности на внешние устройства. Например, код