Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Название:Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:0101
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание
Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Таблица 6.VI.5. Целочисленные типы, которые могут хранить указатели
898 Приложение Б
Расширенные целочисленные константы
Вы можете обозначить константу типа long с помощью суффикса L, как в 445566L. А каким образом указать, что константа имеет тип int32_t? Для этого воспользуйтесь
макросом, определенным в inttypes.h. Например, выражение INT32________ С (445566)
расширяется до константы типа int32_t. По существу этот макрос является приведением к лежащему в основе типу, т.е. к фундаментальному типу, представляющему int32_t в конкретной реализации.
Имена макросов формируются из имени типа, в котором t заменено конструкцией _С и все буквы переведены в верхний регистр. Например, чтобы сделать 1000 константой типа uint_least64_t, примените выражение UINT_LEAST64_C (1000).
Раздел VII. Расширенная поддержка символов
Изначально С не разрабатывался как интернациональный язык программирования. Его набор символов основан на более или менее стандартной клавиатуре, принятой в США. Однако всемирная популярность С привела к появлению ряда расширений, поддерживающих разные и более обширные наборы символов. В этом разделе справочника представлен обзор этих дополнений.
триграфы
Некоторые клавиатуры содержат не все символы, используемые в С. По этой причине в С предлагаются альтернативные представления некоторых символов с помощью набора трехсимвольных последовательностей, называемых триграфными последователь- нос пиши, или просто триграфами. Такие триграфы перечислены в табл. B.VII.l.
Таблица E.Vll.l. Триграфы
В файле исходного кода компилятор С заменяет все вхождения триграфов, даже внутри строк в кавычках, соответствующими символами. В результате следующий код:
Справочные материалы 899
Возможно, для активизации этого средства понадобится включить специальный флаг компилятора.
диграфы
Учитывая громозкость системы триграфов, в стандарте С99 предлагаются двухсимвольные комбинации, называемые диграфами, которые могут использоваться вместо ряда стандартных знаков пунктуации С. Эти диграфы перечислены в табл. Б.VII.2.
Таблица 6.VII.2. Диграфы
В отличие от триграфов, диграфы внутри строк в кавычках не имеют специального назначения. То есть фрагмент
Альтернативное написание: iso646.h
С помощью триграфных последовательностей операцию || можно записать как ??!??!, что не выглядит особенно изящно. Стандарт С99 через заголовочный файл iso646.h (см. табл. B.V.ll) предоставляет макросы, которые расширяются в операции. В стандарте эти макросы называются альтернативным написанием.
Если вы включите заголовочный файл iso646.h, то оператор наподобие
if(x == Ml or х == М2) х and_eq OXFF;
расширяется следующим образом:
if(х == Ml || x == М2) x &= OXFF;
Многобайтные символы
Стандарт описывает многобайтный символ как последовательность из одного или более байтов, которая представляет элемент расширенного набора символов либо
900 Приложение Б в исходной среде, либо в среде выполнения. Исходная среда — это та, где вы подготавливаете исходный код, а среда выполнения — та, в которой вы запускаете скомпилированную программу. Они могут отличаться. Например, программа может разрабатываться в одной среде с намерением запускать ее в другой. Расширенный набор символов является надмножеством базового набора символов, определенного в С.
Реализация может предоставлять расширенный набор символов, который позволяет, к примеру, вводить клавиатурные символы, не соответствующие базовому набору. Они могут применяться в строковых литералах и символьных константах, а также встречаться в файлах. Реализация также может предлагать многобайтные эквиваленты символов из базового набора, которые можно использовать вместо триграфов или диграфов.
Немецкая реализация, например, может разрешить присутствие в строках символов с умляутами:
puts("eins zwei drei vier fdnf");
В общем случае расширенный набор символов, доступный программе, зависит от локальной установки.
Универсальные имена символов (UCN)
Многобайтные символы могут применяться в строках, но не в идентификаторах. Универсальные имена символов (Universal Character Name — UCN) представляют собой дополнение С99, позволяющее использовать символы из расширенного набора в качестве части имен идентификаторов. Система расширяет концепцию управляющих последовательностей для обеспечения возможности кодирования символов из стандарта ISO/IEC 10646. Этот стандарт разработан совместно Международной организацией по стандартизации (ISO) и Международной электротехнической комиссией (IF.C), и он предоставляет числовые коды для огромного списка символов. Стандарт 10646 тесно согласован с Unicode (см. врезку ниже).
Unicode и ISO 10646
Unicode предлагает решение по представлению разнообразных наборов символов за счет предоставления стандартной системы нумерации для большого количества символов и знаков, группируя их по типам. Например, кодировка ASCII включена как подмножество Unicode, поэтому символы U.S. Latin, такие как А и Z, имеют одинаковое представление в обеих системах. Но Unicode также содержит в себе другие латинские символы вроде применяемых в европейских языках; символы из других алфавитов, в числе которых кириллический, греческий, иврит, чероки, арабский, тайский и бенгальский; а также идеограммы вроде тех, что используются в китайском и японском языках. К настоящему времени Unicode представляет свыше 110 000 символов и 100 шрифтов и все еще продолжает развиваться. За дополнительными сведениями обращайтесь на веб-сайт Консорциума Unicode по адресу www.Unicode.org.
Каждому символу в Unicode назначается число, называемое кодовым знаком. Типичная форма записи для кодовых знаков Unicode выглядит так: U-222B. Наличие U идентифицирует последовательность как символ Unicode, а 222В — это шестнадцатеричное число для символа, в данном случае знака интеграла.
Международная организация по стандартизации (ISO) организовала рабочую группу для создания ISO 10646, который также является стандартом для кодирования многоязычного текста. Группа ISO 10646 и группа Unicode работают вместе с 1991 года, поддерживая свои стандарты в согласованном состоянии.
Читать дальшеИнтервал:
Закладка: