stdint.h — заголовний файл стандартної бібліотеки мови C, введений стандартом 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
|
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].
Примітки