Stdint.h

Заголовні файли C
  • assert.h
  • complex.h
  • ctype.h
  • errno.h
  • fenv.h
  • float.h
  • inttypes.h
  • iso646.h
  • limits.h
  • locale.h
  • math.h
  • setjmp.h
  • signal.h
  • stdarg.h
  • stdbool.h
  • stddef.h
  • stdint.h
  • stdio.h
  • stdlib.h
  • string.h
  • tgmath.h
  • time.h
  • wchar.h
  • wctype.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 означає, що цей тип є беззнаковим і містить цілі числа, принаймні, від нуля до 2 N 1 {\displaystyle 2^{N}-1} включно. Таким чином, тип 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 2 x 1 {\displaystyle -2^{x-1}}
INTx_MAX 2 x 1 1 {\displaystyle 2^{x-1}-1}
UINTx_MAX 2 x 1 {\displaystyle 2^{x}-1}
INT_LEASTx_MIN 2 x 1 {\displaystyle -2^{x-1}}
INT_LEASTx_MAX 2 x 1 1 {\displaystyle 2^{x-1}-1}
UINT_LEASTx_MAX 2 x 1 {\displaystyle 2^{x}-1}
INT_FASTx_MIN 2 x 1 {\displaystyle -2^{x-1}}
INT_FASTx_MAX 2 x 1 1 {\displaystyle 2^{x-1}-1}
UINT_FASTx_MAX 2 x 1 {\displaystyle 2^{x}-1}
INTPTR_MIN INTx_MIN, залежить від платформи
INTPTR_MAX INTx_MAX, залежить від платформи
UINTPTR_MAX UINTx_MAX, залежить від платформи
INTMAX_MIN 2 63 {\displaystyle -2^{63}}
INTMAX_MAX 2 63 1 {\displaystyle 2^{63}-1}
UINTMAX_MAX 2 64 1 {\displaystyle 2^{64}-1}
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].

Примітки

  1. а б в г д е ISO/IEC 9899:1999 (PDF). Архів оригіналу (PDF) за 22 серпня 2011. Процитовано 29 березня 2022.
GKG: /g/120_xhkb