Stdint.h

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 10 de junio de 2018; las comprobaciones requieren 13 ediciones .

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]

Tipos

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.

Macros

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

Notas

  1. 1 2 3 4 5 6 ISO/IEC 9899:1999 . Consultado el 5 de agosto de 2011. Archivado desde el original el 22 de agosto de 2011.
  2. Tamaño de letrasize_t