Fixed width integer types (since C99)
Содержание |
Типы
|
Определено в заголовочном файле
<stdint.h>
|
|
int8_t
int16_t
int32_t
int64_t
|
знаковый целочисленный тип с шириной
точно 8, 16, 32 и 64 бита соответственно без битов заполнения и использующий дополнительный код для отрицательных значений (предоставляется только если реализация напрямую поддерживает тип) |
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
|
самый быстрый знаковый целочисленный тип с шириной
не менее 8, 16, 32 и 64 бит соответственно |
int_least8_t
int_least16_t
int_least32_t
int_least64_t
|
наименьший знаковый целочисленный тип с шириной
не менее 8, 16, 32 и 64 бит соответственно |
intmax_t
|
целочисленный тип максимальной ширины |
intptr_t
|
целочисленный тип, способный хранить указатель |
uint8_t
uint16_t
uint32_t
uint64_t
|
беззнаковый целочисленный тип с шириной
точно 8, 16, 32 и 64 бита соответственно (предоставляется только если реализация напрямую поддерживает тип) |
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
|
самый быстрый беззнаковый целочисленный тип с шириной
не менее 8, 16, 32 и 64 бит соответственно |
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
|
наименьший беззнаковый целочисленный тип с шириной
не менее 8, 16, 32 и 64 бит соответственно |
uintmax_t
|
беззнаковый целочисленный тип максимальной ширины |
uintptr_t
|
беззнаковый целочисленный тип, способный хранить указатель |
Реализация может определять имена typedef
int
N
_t
,
int_fast
N
_t
,
int_least
N
_t
,
uint
N
_t
,
uint_fast
N
_t
и
uint_least
N
_t
, когда
N
не равно 8, 16, 32 или 64. Имена typedef вида
int
N
_t
могут быть определены только если реализация поддерживает целочисленный тип такой ширины без заполнения. Таким образом,
uint24_t
обозначает беззнаковый целочисленный тип с точной шириной 24 бита.
Каждый из перечисленных ниже макросов определён тогда и только тогда, когда реализация определяет соответствующее имя типа. Макросы
INT
N
_C
и
UINT
N
_C
соответствуют именам типов
int_least
N
_t
и
uint_least
N
_t
соответственно.
Макроконстанты
|
Определено в заголовочном файле
<stdint.h>
|
|
Знаковые целые числа : разрядность |
|
|
INT8_WIDTH
INT16_WIDTH
INT32_WIDTH
INT64_WIDTH
(C23)
(optional)
|
битовая ширина объекта типа
int8_t
,
int16_t
,
int32_t
,
int64_t
(точно 8, 16, 32, 64)
(макрос-константа) |
|
INT_FAST8_WIDTH
INT_FAST16_WIDTH
INT_FAST32_WIDTH
INT_FAST64_WIDTH
(C23)
|
битовая ширина объекта типа
int_fast8_t
,
int_fast16_t
,
int_fast32_t
,
int_fast64_t
(макроконстанта) |
|
INT_LEAST8_WIDTH
INT_LEAST16_WIDTH
INT_LEAST32_WIDTH
INT_LEAST64_WIDTH
(C23)
|
битовая ширина объекта типа
int_least8_t
,
int_least16_t
,
int_least32_t
,
int_least64_t
(макрос-константа) |
|
INTPTR_WIDTH
(C23)
(optional)
|
битовая ширина объекта типа
intptr_t
(макрос-константа) |
|
INTMAX_WIDTH
(C23)
|
битовая ширина объекта типа
intmax_t
(макрос-константа) |
Целочисленные типы со знаком : минимальное значение |
|
|
INT8_MIN
INT16_MIN
INT32_MIN
INT64_MIN
|
минимальное значение объекта типа
int8_t
,
int16_t
,
int32_t
,
int64_t
(макрос-константа) |
|
INT_FAST8_MIN
INT_FAST16_MIN
INT_FAST32_MIN
INT_FAST64_MIN
|
минимальное значение объекта типа
int_fast8_t
,
int_fast16_t
,
int_fast32_t
,
int_fast64_t
(макрос-константа) |
|
INT_LEAST8_MIN
INT_LEAST16_MIN
INT_LEAST32_MIN
INT_LEAST64_MIN
|
минимальное значение объекта типа
int_least8_t
,
int_least16_t
,
int_least32_t
,
int_least64_t
(макрос-константа) |
|
INTPTR_MIN
|
минимальное значение объекта типа
intptr_t
(макрос-константа) |
|
INTMAX_MIN
|
минимальное значение объекта типа
intmax_t
(макрос-константа) |
Целочисленные типы со знаком : максимальное значение |
|
|
INT8_MAX
INT16_MAX
INT32_MAX
INT64_MAX
|
максимальное значение объекта типа
int8_t
,
int16_t
,
int32_t
,
int64_t
(макрос-константа) |
|
INT_FAST8_MAX
INT_FAST16_MAX
INT_FAST32_MAX
INT_FAST64_MAX
|
максимальное значение объекта типа
int_fast8_t
,
int_fast16_t
,
int_fast32_t
,
int_fast64_t
(макрос-константа) |
|
INT_LEAST8_MAX
INT_LEAST16_MAX
INT_LEAST32_MAX
INT_LEAST64_MAX
|
максимальное значение объекта типа
int_least8_t
,
int_least16_t
,
int_least32_t
,
int_least64_t
(макрос-константа) |
|
INTPTR_MAX
|
максимальное значение объекта типа
intptr_t
(макрос-константа) |
|
INTMAX_MAX
|
максимальное значение объекта типа
intmax_t
(макроконстанта) |
Беззнаковые целые числа : ширина |
|
|
UINT8_WIDTH
UINT16_WIDTH
UINT32_WIDTH
UINT64_WIDTH
(C23)
(опционально)
|
битовая ширина объекта типа
uint8_t
,
uint16_t
,
uint32_t
,
uint64_t
(точно 8, 16, 32, 64)
(макроконстанта) |
|
UINT_FAST8_WIDTH
UINT_FAST16_WIDTH
UINT_FAST32_WIDTH
UINT_FAST64_WIDTH
(C23)
|
битовая ширина объекта типа
uint_fast8_t
,
uint_fast16_t
,
uint_fast32_t
,
uint_fast64_t
(макрос-константа) |
|
UINT_LEAST8_WIDTH
UINT_LEAST16_WIDTH
UINT_LEAST32_WIDTH
UINT_LEAST64_WIDTH
(C23)
|
битовая ширина объекта типа
uint_least8_t
,
uint_least16_t
,
uint_least32_t
,
uint_least64_t
(макрос-константа) |
|
UINTPTR_WIDTH
(C23)
(optional)
|
битовая ширина объекта типа
uintptr_t
(макро-константа) |
|
UINTMAX_WIDTH
(C23)
|
битовая ширина объекта типа
uintmax_t
(макрос-константа) |
Беззнаковые целые числа: максимальное значение |
|
|
UINT8_MAX
UINT16_MAX
UINT32_MAX
UINT64_MAX
|
максимальное значение объекта типа
uint8_t
,
uint16_t
,
uint32_t
,
uint64_t
(макрос-константа) |
|
UINT_FAST8_MAX
UINT_FAST16_MAX
UINT_FAST32_MAX
UINT_FAST64_MAX
|
максимальное значение объекта типа
uint_fast8_t
,
uint_fast16_t
,
uint_fast32_t
,
uint_fast64_t
(макрос-константа) |
|
UINT_LEAST8_MAX
UINT_LEAST16_MAX
UINT_LEAST32_MAX
UINT_LEAST64_MAX
|
максимальное значение объекта типа
uint_least8_t
,
uint_least16_t
,
uint_least32_t
,
uint_least64_t
(макрос-константа) |
|
UINTPTR_MAX
|
максимальное значение объекта типа
uintptr_t
(макрос-константа) |
|
UINTMAX_MAX
|
максимальное значение объекта типа
uintmax_t
(макрос-константа) |
Функциональные макросы для целочисленных констант минимальной ширины
|
INT8_C
INT16_C
INT32_C
INT64_C
|
раскрывается в целочисленное константное выражение со значением, заданным аргументом, и типом
int_least8_t
,
int_least16_t
,
int_least32_t
,
int_least64_t
соответственно
(функциональный макрос) |
|
INTMAX_C
|
раскрывается в целочисленное константное выражение со значением, заданным аргументом, и типом
intmax_t
(функциональный макрос) |
|
UINT8_C
UINT16_C
UINT32_C
UINT64_C
|
раскрывается в целочисленное константное выражение со значением, заданным аргументом, и типом
uint_least8_t
,
uint_least16_t
,
uint_least32_t
,
uint_least64_t
соответственно
(функциональный макрос) |
|
UINTMAX_C
|
раскрывается в целочисленное константное выражение со значением, заданным аргументом, и типом
uintmax_t
(функциональный макрос) |
#include <stdint.h> UINT64_C(0x123) // может раскрываться в 0x123ULL или 0x123UL
Макроконстанты формата
|
Определено в заголовочном файле
<inttypes.h>
|
Константы форматирования для fprintf семейства функций
Каждый из
PRI
макросов, перечисленных здесь, определён тогда и только тогда, когда реализация определяет соответствующее имя типа-псевдонима.
|
Эквивалент
для int или unsigned int |
Описание | Макросы для типов данных | ||||
|---|---|---|---|---|---|---|
[u]int
x
_t
|
[u]int_least
x
_t
|
[u]int_fast
x
_t
|
[u]intmax_t
|
[u]intptr_t
|
||
d
|
вывод знакового целочисленного значения в десятичной системе | PRId x | PRIdLEAST x | PRIdFAST x | PRIdMAX | PRIdPTR |
i
|
PRIi x | PRIiLEAST x | PRIiFAST x | PRIiMAX | PRIiPTR | |
u
|
вывод беззнакового целочисленного значения в десятичной системе | PRIu x | PRIuLEAST x | PRIuFAST x | PRIuMAX | PRIuPTR |
o
|
вывод беззнакового целочисленного значения в восьмеричной системе | PRIo x | PRIoLEAST x | PRIoFAST x | PRIoMAX | PRIoPTR |
x
|
вывод беззнакового целочисленного значения в шестнадцатеричной системе (нижний регистр) | PRIx x | PRIxLEAST x | PRIxFAST x | PRIxMAX | PRIxPTR |
X
|
вывод беззнакового целочисленного значения в шестнадцатеричной системе (верхний регистр) | PRIX x | PRIXLEAST x | PRIXFAST x | PRIXMAX | PRIXPTR |
Константы формата для fscanf семейства функций
Каждый из макросов
SCN
, перечисленных здесь, определён тогда и только тогда, когда реализация определяет соответствующее имя типа-псевдонима и имеет подходящий
fscanf
модификатор длины для типа.
|
Эквивалент
для int или unsigned int |
Описание | Макросы для типов данных | ||||
|---|---|---|---|---|---|---|
[u]int
x
_t
|
[u]int_least
x
_t
|
[u]int_fast
x
_t
|
[u]intmax_t
|
[u]intptr_t
|
||
d
|
ввод знакового десятичного целого числа | SCNd x | SCNdLEAST x | SCNdFAST x | SCNdMAX | SCNdPTR |
i
|
ввод знакового целого числа (основание определяется по первым разобранным символам) | SCNi x | SCNiLEAST x | SCNiFAST x | SCNiMAX | SCNiPTR |
u
|
ввод беззнакового десятичного целого числа | SCNu x | SCNuLEAST x | SCNuFAST x | SCNuMAX | SCNuPTR |
o
|
ввод беззнакового восьмеричного целого числа | SCNo x | SCNoLEAST x | SCNoFAST x | SCNoMAX | SCNoPTR |
x
|
ввод беззнакового шестнадцатеричного целого числа | SCNx x | SCNxLEAST x | SCNxFAST x | SCNxMAX | SCNxPTR |
Пример
См. также примечание о совместимости C++ относительно пробелов перед макросами формата используемыми в этом примере.
Возможный вывод:
8 lld -9223372036854775808 +9223372036854775807 +7
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.8.1 Макросы для спецификаторов формата (стр.: TBD)
-
- 7.18 Целочисленные типы <stdint.h> (стр.: TBD)
- Стандарт 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++ documentation
для
Fixed width integer types
|
|
|
C++ documentation
для
User-defined literals (
formatting macros note
)
|