Stdint.h
Шаблон:Заголовок із малої літери Шаблон:Стандартна бібліотека С 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].