Spec-Zone.ru › C

Целочисленные типы фиксированной ширины (начиная с C99)

Типы

Для каждого из следующих имён typedef, отмеченных как (необязательно), реализация определяет его тогда и только тогда, когда предоставляет соответствующий тип.

Определён в заголовочном файле <stdint.h>
int8_tint16_tint32_tint64_tintN_t
(необязательно)(необязательно)(необязательно)(необязательно)(необязательно)
знаковый целочисленный тип шириной ровно N бит (обычно 8, 16, 32 или 64) и без битов заполнения
(typedef)
int_fast8_tint_fast16_tint_fast32_tint_fast64_tint_fastN_t
(необязательно)
самый быстрый знаковый целочисленный тип шириной не менее N бит (обычно 8, 16, 32 или 64)
(typedef)
int_least8_tint_least16_tint_least32_tint_least64_tint_leastN_t
(необязательно)
наименьший знаковый целочисленный тип шириной не менее N бит (обычно 8, 16, 32 или 64)
(если определён intN_t, int_leastN_t обозначает тот же тип)
(typedef)
intmax_t
знаковый целочисленный тип максимальной ширины, отличный от целочисленного типа с точной шириной в битах(начиная с C23)
(typedef)
intptr_t
(необязательно)
знаковый целочисленный тип, отличный от целочисленного типа с точной шириной в битах(начиная с C23), способный хранить указатель на void
(typedef)
uint8_tuint16_tuint32_tuint64_tuintN_t
(необязательно)(необязательно)(необязательно)(необязательно)(необязательно)
беззнаковый целочисленный тип шириной ровно N бит (обычно 8, 16, 32 или 64) и без битов заполнения
(typedef)
uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_tuint_fastN_t
(необязательно)
самый быстрый беззнаковый целочисленный тип шириной не менее N бит (обычно 8, 16, 32 или 64)
(typedef)
uint_least8_tuint_least16_tuint_least32_tuint_least64_tuint_leastN_t
(необязательно)
наименьший беззнаковый целочисленный тип шириной не менее N бит (обычно 8, 16, 32 или 64)
(если определён uintN_t, uint_leastN_t обозначает тот же тип)
(typedef)
uintmax_t
беззнаковый целочисленный тип максимальной ширины, отличный от целочисленного типа с точной шириной в битах(начиная с C23)
(typedef)
uintptr_t
(необязательно)
беззнаковый целочисленный тип, отличный от целочисленного типа с точной шириной в битах(начиная с C23), способный хранить указатель на void
(typedef)

Макросы-константы

Для каждого из следующих макросов, отмеченных как (присутствует при определённых условиях), реализация определяет его тогда и только тогда, когда определяет соответствующее имя typedef.

Определены в заголовочном файле <stdint.h>
Знаковые целые числа: ширина в битах
INTN_WIDTH
(C23)(присутствует при определённых условиях)
ширина в битах типа intN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
INT_FASTN_WIDTH
(C23)(присутствует при определённых условиях)
ширина в битах типа int_fastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
INT_LEASTN_WIDTH
(C23)(присутствует при определённых условиях)
ширина в битах типа int_leastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
INTMAX_WIDTH
(C23)
ширина в битах типа intmax_t
(макрос-константа)
INTPTR_WIDTH
(C23)(присутствует при определённых условиях)
ширина в битах типа intptr_t
(макрос-константа)
Знаковые целые числа: минимальное значение
INTN_MIN
(присутствует при определённых условиях)
минимальное значение типа intN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
INT_FASTN_MIN
(присутствует при определённых условиях)
минимальное значение типа int_fastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
INT_LEASTN_MIN
(присутствует при определённых условиях)
минимальное значение типа int_leastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
INTMAX_MIN
минимальное значение типа intmax_t
(макрос-константа)
INTPTR_MIN
(присутствует при определённых условиях)
минимальное значение типа intptr_t
(макрос-константа)
Знаковые целые числа: максимальное значение
INTN_MAX
(присутствует при определённых условиях)
максимальное значение типа intN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
INT_FASTN_MAX
(присутствует при определённых условиях)
максимальное значение типа int_fastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
INT_LEASTN_MAX
(присутствует при определённых условиях)
максимальное значение типа int_leastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
INTMAX_MAX
максимальное значение типа intmax_t
(макрос-константа)
INTPTR_MAX
(присутствует при определённых условиях)
максимальное значение типа intptr_t
(макрос-константа)
Беззнаковые целые числа: ширина в битах
UINTN_WIDTH
(C23)(присутствует при определённых условиях)
ширина в битах типа uintN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
UINT_FASTN_WIDTH
(C23)(присутствует при определённых условиях)
ширина в битах типа uint_fastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
UINT_LEASTN_WIDTH
(C23)(присутствует при определённых условиях)
ширина в битах типа uint_leastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
UINTMAX_WIDTH
(C23)
ширина в битах типа uintmax_t
(макрос-константа)
UINTPTR_WIDTH
(C23)(присутствует при определённых условиях)
ширина в битах типа uintptr_t
(макрос-константа)
Беззнаковые целые числа: максимальное значение
UINTN_MAX
(присутствует при определённых условиях)
максимальное значение типа uintN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
UINT_FASTN_MAX
(присутствует при определённых условиях)
максимальное значение типа uint_fastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
UINT_LEASTN_MAX
(присутствует при определённых условиях)
максимальное значение типа uint_leastN_t (N обычно равно 8, 16, 32 или 64)
(макрос-константа)
UINTMAX_MAX
максимальное значение типа uintmax_t
(макрос-константа)
UINTPTR_MAX
(присутствует при определённых условиях)
максимальное значение типа uintptr_t
(макрос-константа)

Макросы-функции

Для каждого из следующих макросов, отмеченных как (присутствует при определённых условиях), реализация определяет его тогда и только тогда, когда определяет соответствующее имя typedef.

INTN_C
(присутствует при определённых условиях)
разворачивается в целочисленное константное выражение типа int_leastN_t; его значение задаётся аргументом
(макрос-функция)
INTMAX_C
разворачивается в целочисленное константное выражение типа intmax_t; его значение задаётся аргументом
(макрос-функция)
UINTN_C
(присутствует при определённых условиях)
разворачивается в целочисленное константное выражение типа uint_leastN_t; его значение задаётся аргументом
(макрос-функция)
UINTMAX_C
разворачивается в целочисленное константное выражение типа uintmax_t; его значение задаётся аргументом
(макрос-функция)
#include <stdint.h>
UINT64_C(0x123) // might expand to 0x123ULL or 0x123UL

Макросы-константы формата

Определены в заголовочном файле <inttypes.h>

Константы формата для семейства функций fprintf

Каждый из перечисленных здесь макросов PRI определён тогда и только тогда, когда реализация определяет соответствующее имя typedef.

Эквивалент
для int или
unsignedint
Описание Макросы для типов данных




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
d вывод знакового десятичного целого значения PRIdx PRIdLEASTx PRIdFASTx PRIdMAX PRIdPTR
i PRIix PRIiLEASTx PRIiFASTx PRIiMAX PRIiPTR
u вывод беззнакового десятичного целого значения PRIux PRIuLEASTx PRIuFASTx PRIuMAX PRIuPTR
o вывод беззнакового восьмеричного целого значения PRIox PRIoLEASTx PRIoFASTx PRIoMAX PRIoPTR
x вывод беззнакового целого шестнадцатеричного значения в нижнем регистре PRIxx PRIxLEASTx PRIxFASTx PRIxMAX PRIxPTR
X вывод беззнакового целого шестнадцатеричного значения в верхнем регистре PRIXx PRIXLEASTx PRIXFASTx PRIXMAX PRIXPTR

Константы формата для семейства функций fscanf

Каждый из перечисленных здесь макросов SCN определён тогда и только тогда, когда реализация определяет соответствующее имя typedef и имеет подходящий модификатор длины fscanf для этого типа.

Эквивалент
для int или
unsignedint
Описание Макросы для типов данных




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
d ввод знакового десятичного целого значения SCNdx SCNdLEASTx SCNdFASTx SCNdMAX SCNdPTR
i ввод знакового целого значения (основание определяется первыми считанными символами) SCNix SCNiLEASTx SCNiFASTx SCNiMAX SCNiPTR
u ввод беззнакового десятичного целого значения SCNux SCNuLEASTx SCNuFASTx SCNuMAX SCNuPTR
o ввод беззнакового восьмеричного целого значения SCNox SCNoLEASTx SCNoFASTx SCNoMAX SCNoPTR
x ввод беззнакового шестнадцатеричного целого значения SCNxx SCNxLEASTx SCNxFASTx SCNxMAX SCNxPTR

Пример

См. также примечание о совместимости с C++, касающееся пробелов перед макросами формата, используемыми в этом примере.

#include <inttypes.h>
#include <stdio.h>

int main(void)
{
    printf("%zu\n", sizeof(int64_t));
    printf("%s\n", PRId64);
    printf("%+" PRId64 "\n", INT64_MIN);
    printf("%+" PRId64 "\n", INT64_MAX);
    
    int64_t n = 7;
    printf("%+" PRId64 "\n", n);
}

Возможный вывод:

8
lld
-9223372036854775808
+9223372036854775807
+7

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
    • 7.8.1 Макросы для спецификаторов формата (стр.: уточняется)
    • 7.18 Целочисленные типы <stdint.h> (стр.: уточняется)
  • Стандарт C17 (ISO/IEC 9899:2018):
    • 7.8.1 Макросы для спецификаторов формата (стр.: 158–159)
    • 7.18 Целочисленные типы <stdint.h> (стр.: 212–216)
  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.8.1 Макросы для спецификаторов формата (стр.: 217–218)
    • 7.18 Целочисленные типы <stdint.h> (стр.: 289–295)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.8.1 Макросы для спецификаторов формата (стр.: 198–199)
    • 7.18 Целочисленные типы <stdint.h> (стр.: 255–261)

См. также

  • Арифметические типы
Документация по C++ для целочисленных типов фиксированной ширины
Документация по C++ для литералов, определяемых пользователем (примечание о макросах форматирования)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/types/integer

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API