Справочные материалы 897
В табл. B.VI.3 перечислены самые быстрые типы с минимальной шириной, спецификаторы формата и предельные значения.
Таблица 6.VI.3. Самые быстрые типы с минимальной шириной
Типы максимальной ширины
Иногда вам может понадобиться наибольший целочисленный тип из доступных. В табл. Б.VI.4 перечислены такие типы. Фактически они могут быть шире, чем long long или unsigned long long, поскольку система может предоставлять дополнительные типы, более широкие, чем обязательные стандартные типы.
Таблица 6.VI.4. Типы максимальной ширины
Целые, которые могут хранить указатели
В заголовочном файле inttypes.h (через включенный в него stdint.li) определены два целочисленных типа, приведенные в табл. Б.VI.5, которые могут корректно хранить указатели. То есть, если вы присвоите значение типа void * переменной одного из этих типов, а затем присвоите ее значение обратно указателю, то никакая информация не будет потеряна. Любой из этих типов, или все сразу, могут в системе отсутствовать.
Таблица 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.