stdint.h es el archivo de encabezado de biblioteca estándar de C introducido por el estándar C99 . El archivo de encabezado declara varios tipos de enteros y macros . [una]
El archivo de encabezado declara tipos enteros que tienen un tamaño dado, tienen un tamaño mínimo dado y son los más rápidos de usar. [1] Además de estos, el estándar declara macros que establecen el tamaño de estos tipos. La plataforma debe admitir al menos una cantidad de tipos enteros de tamaños determinados:
Tipo de | Profundidad de bits | Conjunto de valores |
---|---|---|
int_least8_t | al menos 8 bits | [-128;127] |
int_menos16_t | al menos 16 bits | [-32768; 32767] |
int_least32_t | al menos 32 bits | [-2147483648; 2147483647] |
int_least64_t | al menos 64 bits | [-(2^63); 2^63 - 1] |
uint_least8_t | al menos 8 bits | [0; 255] |
uint_least16_t | al menos 16 bits | [0; 65535] |
uint_least32_t | al menos 32 bits | [0; 4294967295] |
uint_least64_t | al menos 64 bits | [0; 2^64 - 1] |
int_fast8_t | al menos 8 bits | [-128; 127] |
int_fast16_t | al menos 16 bits | [-32768; 32767] |
int_fast32_t | al menos 32 bits | [-2147483648; 2147483647] |
int_fast64_t | al menos 64 bits | [-(2^63); 2^63 - 1] |
uint_fast8_t | al menos 8 bits | [0; 255] |
uint_fast16_t | al menos 16 bits | [0; 65535] |
uint_fast32_t | al menos 32 bits | [0; 4294967295] |
uint_fast64_t | al menos 64 bits | [0; 2^64 - 1] |
Tipos con ancho exacto.
No todos los sistemas pueden admitir todos estos tipos.
Tipo de | Descripción |
---|---|
int8_t | 8 bits firmado |
int16_t | 16 bits firmado |
int32_t | firmado de 32 bits |
int64_t | firmado de 64 bits |
uint8_t | 8 bits sin firmar |
uint16_t | 16 bits sin firmar |
uint32_t | 32 bits sin firmar |
uint64_t | 64 bits sin firmar |
Los tipos dados tienen exactamente 8, 16, 32 y 64 bits de ancho, respectivamente. [1] El prefijo usignifica que este tipo no tiene signo y contiene números enteros desde al menos cero hasta ambos inclusive. Por lo tanto, el tipo debe existir y contener números del cero al 255 inclusive. uint_least8_t
La plataforma puede admitir punteros a tipos de enteros con y sin signo: intptr_ty uintptr_t. [1] El estándar C99 exige que la plataforma admita los siguientes tipos: intmax_t, uintmax_t, que pueden representar valores enteros máximos.
El archivo de encabezado declara conjuntos de macros que contienen los valores mínimo y máximo de tipos enteros. [1] Para obtener un nombre que represente el valor mínimo o máximo de un tipo dado, tome el nombre del tipo, reemplace _t con _MIN o _MAX y convierta todos los caracteres a mayúsculas. Por ejemplo, el valor más pequeño para int32_t es INT32_MIN y el más grande para uint_fast16_t es UINT_FAST16_MAX.
Macro | Sentido |
---|---|
INT x_MIN _ | |
INT x_MAX _ | |
UINT x _MAX | |
INT_MENOS x _MIN | |
INT_MENOS x _MAX | |
UINT_MENOS x _MAX | |
INT_RÁPIDO x _MIN | |
INT_RÁPIDO x _MAX | |
UINT_FAST x _MAX | |
INTPTR_MIN | INT x _MIN, depende de la plataforma |
INTPTR_MAX | INT x _MAX, depende de la plataforma |
UINTPTR_MAX | UINT x _MAX, depende de la plataforma |
INTMAX_MIN | |
INTMAX_MAX | |
UINTMAX_MAX | |
PTRDIFF_MIN | INTPTR_MIN |
PTRDIFF_MAX | INTPTR_MAX |
TAMAÑO_MAX [2] | UINTPTR_MAX |
El estándar también define el tamaño de los tipos sig_atomic_t , que pueden contener valores de [-128; 127], o [0; 255]. El tipo wchar_ttiene las mismas restricciones, solo que son mínimas. El tipo wint_t, si está definido, debe contener al menos los valores [-32768; 32767], o [0; 65535].
Las macros , deben expandirse a expresiones constantes enteras con valor valor y dimensión INT_LEAST x _T , y respectivamente. Por ejemplo, en una máquina de 64 bits, la expresión UINT64_C(123) debe convertirse en una constante . [una]INTx_C(value)INTMAX_C(value)UINTMAX_C(value)intmax_tuintmax_t123ULL