stdint.h
stdint.h — заголовочный файл стандартной библиотеки языка Си, введённый стандартом C99. Заголовочный файл объявляет несколько целочисленных типов и макросов.[1]
Типы
[править | править код]Заголовочный файл объявляет целочисленные типы, которые имеют заданный размер, имеют заданный минимальный размер и которые являются наиболее быстрыми при использовании.[1] В дополнение к ним стандарт объявляет макросы, устанавливающие размер этих типов. Платформа должна поддерживать, как минимум, ряд целочисленных типов заданных размеров:
Тип | Разрядность | Набор значений |
---|---|---|
int_least8_t | как минимум, 8 бит | [-128;127] |
int_least16_t | как минимум, 16 бит | [-32768; 32767] |
int_least32_t | как минимум, 32 бита | [-2147483648; 2147483647] |
int_least64_t | как минимум, 64 бита | [-(2^63); 2^63 - 1] |
uint_least8_t | как минимум, 8 бит | [0; 255] |
uint_least16_t | как минимум, 16 бит | [0; 65535] |
uint_least32_t | как минимум, 32 бита | [0; 4294967295] |
uint_least64_t | как минимум, 64 бита | [0; 2^64 - 1] |
int_fast8_t | как минимум, 8 бит | [-128; 127] |
int_fast16_t | как минимум, 16 бит | [-32768; 32767] |
int_fast32_t | как минимум, 32 бита | [-2147483648; 2147483647] |
int_fast64_t | как минимум, 64 бита | [-(2^63); 2^63 - 1] |
uint_fast8_t | как минимум, 8 бит | [0; 255] |
uint_fast16_t | как минимум, 16 бит | [0; 65535] |
uint_fast32_t | как минимум, 32 бита | [0; 4294967295] |
uint_fast64_t | как минимум, 64 бита | [0; 2^64 - 1] |
Типы с точной шириной.
Не все системы могут поддерживать все эти типы.
Тип | Описание |
---|---|
int8_t | 8-битовый со знаком |
int16_t | 16-битовый со знаком |
int32_t | 32-битовый со знаком |
int64_t | 64-битовый со знаком |
uint8_t | 8-битовый без знака |
uint16_t | 16-битовый без знака |
uint32_t | 32-битовый без знака |
uint64_t | 64-битовый без знака |
Заданные типы имеют ширину в точности 8, 16, 32 и 64 бита соответственно.[1] Приставка u
означает, что этот тип является беззнаковым и содержит целые числа, как минимум, от нуля до включительно. Таким образом, тип uint_least8_t
должен существовать и содержать числа от нуля до 255 включительно.
Платформа может поддерживать указатели на знаковые и беззнаковые целочисленные типы: intptr_t
и uintptr_t
.[1]
Платформа обязана в рамках стандарта С99 поддерживать следующие типы: intmax_t
, uintmax_t
, которые могут представлять максимальные целочисленные значения.
Макросы
[править | править код]Заголовочный файл объявляет наборы макросов, которые содержат минимальные и максимальные значения целочисленных типов.[1] Чтобы получить имя, представляющее минимальное или максимальное значение данного типа, возьмите имя типа, замените _t на _MIN или _MAX и переведите все символы в верхний регистр. Например, наименьшим значением для типа int32_t является INT32_MIN, а наибольшим значением для типа uint_fast16_t - UINT_FAST16_MAX.
Эта статья или раздел нуждается в переработке. |
Проверить информацию. |
Макрос | Значение |
---|---|
INTx_MIN | |
INTx_MAX | |
UINTx_MAX | |
INT_LEASTx_MIN | |
INT_LEASTx_MAX | |
UINT_LEASTx_MAX | |
INT_FASTx_MIN | |
INT_FASTx_MAX | |
UINT_FASTx_MAX | |
INTPTR_MIN | INTx_MIN, зависит от платформы |
INTPTR_MAX | INTx_MAX, зависит от платформы |
UINTPTR_MAX | UINTx_MAX, зависит от платформы |
INTMAX_MIN | |
INTMAX_MAX | |
UINTMAX_MAX | |
PTRDIFF_MIN | INTPTR_MIN |
PTRDIFF_MAX | INTPTR_MAX |
SIZE_MAX[2] | UINTPTR_MAX |
Стандарт также определяет размер типов sig_atomic_t, который может содержать значения либо [-128; 127], либо [0; 255]. Для типа wchar_t
установлены такие же ограничения, только они являются минимальными. Тип wint_t
, если определён, должен содержать, как минимум, либо значения [-32768; 32767], либо [0; 65535].
Макросы INTx_C(value)
, INTMAX_C(value)
, UINTMAX_C(value)
должны раскрываться в целочисленные константные выражения со значением value и с размерностью INT_LEASTx_T, intmax_t
и uintmax_t
соответственно. К примеру, на 64-разрядной машине выражение UINT64_C(123) должно преобразоваться в константу 123ULL
.[1]
Примечания
[править | править код]- ↑ 1 2 3 4 5 6 ISO/IEC 9899:1999 . Дата обращения: 5 августа 2011. Архивировано 22 августа 2011 года.
- ↑ Размер типа
size_t