Fixed width integer types (since C99)
Contenidos |
Tipos
|
Definido en el encabezado
<stdint.h>
|
|
int8_t
int16_t
int32_t
int64_t
|
tipo entero con signo con ancho de
exactamente 8, 16, 32 y 64 bits respectivamente sin bits de relleno y usando complemento a 2 para valores negativos (proporcionado solo si la implementación admite directamente el tipo) |
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
|
tipo entero con signo más rápido con ancho de
al menos 8, 16, 32 y 64 bits respectivamente |
int_least8_t
int_least16_t
int_least32_t
int_least64_t
|
tipo entero con signo más pequeño con ancho de
al menos 8, 16, 32 y 64 bits respectivamente |
intmax_t
|
tipo entero de ancho máximo |
intptr_t
|
tipo entero capaz de contener un puntero |
uint8_t
uint16_t
uint32_t
uint64_t
|
tipo entero sin signo con ancho de
exactamente 8, 16, 32 y 64 bits respectivamente (proporcionado solo si la implementación admite directamente el tipo) |
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
|
tipo entero sin signo más rápido con ancho de
al menos 8, 16, 32 y 64 bits respectivamente |
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
|
tipo entero sin signo más pequeño con ancho de
al menos 8, 16, 32 y 64 bits respectivamente |
uintmax_t
|
tipo entero sin signo de ancho máximo |
uintptr_t
|
tipo entero sin signo capaz de contener un puntero |
La implementación puede definir nombres de typedef
int
N
_t
,
int_fast
N
_t
,
int_least
N
_t
,
uint
N
_t
,
uint_fast
N
_t
, y
uint_least
N
_t
cuando
N
no es 8, 16, 32 o 64. Los nombres de typedef de la forma
int
N
_t
solo pueden definirse si la implementación admite un tipo entero de ese ancho sin relleno. Por lo tanto,
uint24_t
denota un tipo entero sin signo con un ancho de exactamente 24 bits.
Cada una de las macros listadas a continuación está definida si y solo si la implementación define el nombre de tipo correspondiente. Las macros
INT
N
_C
y
UINT
N
_C
corresponden a los nombres de tipo
int_least
N
_t
y
uint_least
N
_t
, respectivamente.
Constantes de macro
|
Definido en el encabezado
<stdint.h>
|
|
Enteros con signo : ancho |
|
|
INT8_WIDTH
INT16_WIDTH
INT32_WIDTH
INT64_WIDTH
(C23)
(opcional)
|
ancho en bits de un objeto de tipo
int8_t
,
int16_t
,
int32_t
,
int64_t
(exactamente 8, 16, 32, 64)
(constante macro) |
|
INT_FAST8_WIDTH
INT_FAST16_WIDTH
INT_FAST32_WIDTH
INT_FAST64_WIDTH
(C23)
|
ancho en bits de un objeto de tipo
int_fast8_t
,
int_fast16_t
,
int_fast32_t
,
int_fast64_t
(constante macro) |
|
INT_LEAST8_WIDTH
INT_LEAST16_WIDTH
INT_LEAST32_WIDTH
INT_LEAST64_WIDTH
(C23)
|
ancho en bits de un objeto de tipo
int_least8_t
,
int_least16_t
,
int_least32_t
,
int_least64_t
(constante macro) |
|
INTPTR_WIDTH
(C23)
(opcional)
|
ancho en bits de un objeto de tipo
intptr_t
(constante macro) |
|
INTMAX_WIDTH
(C23)
|
ancho en bits de un objeto de tipo
intmax_t
(constante macro) |
Enteros con signo : valor mínimo |
|
|
INT8_MIN
INT16_MIN
INT32_MIN
INT64_MIN
|
valor mínimo de un objeto de tipo
int8_t
,
int16_t
,
int32_t
,
int64_t
(constante macro) |
|
INT_FAST8_MIN
INT_FAST16_MIN
INT_FAST32_MIN
INT_FAST64_MIN
|
valor mínimo de un objeto de tipo
int_fast8_t
,
int_fast16_t
,
int_fast32_t
,
int_fast64_t
(constante macro) |
|
INT_LEAST8_MIN
INT_LEAST16_MIN
INT_LEAST32_MIN
INT_LEAST64_MIN
|
valor mínimo de un objeto de tipo
int_least8_t
,
int_least16_t
,
int_least32_t
,
int_least64_t
(constante macro) |
|
INTPTR_MIN
|
valor mínimo de un objeto de tipo
intptr_t
(constante macro) |
|
INTMAX_MIN
|
valor mínimo de un objeto de tipo
intmax_t
(constante macro) |
Enteros con signo : valor máximo |
|
|
INT8_MAX
INT16_MAX
INT32_MAX
INT64_MAX
|
valor máximo de un objeto de tipo
int8_t
,
int16_t
,
int32_t
,
int64_t
(constante macro) |
|
INT_FAST8_MAX
INT_FAST16_MAX
INT_FAST32_MAX
INT_FAST64_MAX
|
valor máximo de un objeto de tipo
int_fast8_t
,
int_fast16_t
,
int_fast32_t
,
int_fast64_t
(constante macro) |
|
INT_LEAST8_MAX
INT_LEAST16_MAX
INT_LEAST32_MAX
INT_LEAST64_MAX
|
valor máximo de un objeto de tipo
int_least8_t
,
int_least16_t
,
int_least32_t
,
int_least64_t
(constante macro) |
|
INTPTR_MAX
|
valor máximo de un objeto de tipo
intptr_t
(constante macro) |
|
INTMAX_MAX
|
valor máximo de un objeto de tipo
intmax_t
(constante macro) |
Enteros sin signo : ancho |
|
|
UINT8_WIDTH
UINT16_WIDTH
UINT32_WIDTH
UINT64_WIDTH
(C23)
(opcional)
|
ancho en bits de un objeto de tipo
uint8_t
,
uint16_t
,
uint32_t
,
uint64_t
(exactamente 8, 16, 32, 64)
(constante macro) |
|
UINT_FAST8_WIDTH
UINT_FAST16_WIDTH
UINT_FAST32_WIDTH
UINT_FAST64_WIDTH
(C23)
|
ancho en bits de un objeto de tipo
uint_fast8_t
,
uint_fast16_t
,
uint_fast32_t
,
uint_fast64_t
(constante macro) |
|
UINT_LEAST8_WIDTH
UINT_LEAST16_WIDTH
UINT_LEAST32_WIDTH
UINT_LEAST64_WIDTH
(C23)
|
ancho en bits de un objeto de tipo
uint_least8_t
,
uint_least16_t
,
uint_least32_t
,
uint_least64_t
(constante macro) |
|
UINTPTR_WIDTH
(C23)
(opcional)
|
ancho en bits de un objeto de tipo
uintptr_t
(constante macro) |
|
UINTMAX_WIDTH
(C23)
|
ancho en bits de un objeto de tipo
uintmax_t
(constante macro) |
Enteros sin signo : valor máximo |
|
|
UINT8_MAX
UINT16_MAX
UINT32_MAX
UINT64_MAX
|
valor máximo de un objeto de tipo
uint8_t
,
uint16_t
,
uint32_t
,
uint64_t
(constante macro) |
|
UINT_FAST8_MAX
UINT_FAST16_MAX
UINT_FAST32_MAX
UINT_FAST64_MAX
|
valor máximo de un objeto de tipo
uint_fast8_t
,
uint_fast16_t
,
uint_fast32_t
,
uint_fast64_t
(constante macro) |
|
UINT_LEAST8_MAX
UINT_LEAST16_MAX
UINT_LEAST32_MAX
UINT_LEAST64_MAX
|
valor máximo de un objeto de tipo
uint_least8_t
,
uint_least16_t
,
uint_least32_t
,
uint_least64_t
(constante macro) |
|
UINTPTR_MAX
|
valor máximo de un objeto de tipo
uintptr_t
(constante macro) |
|
UINTMAX_MAX
|
valor máximo de un objeto de tipo
uintmax_t
(constante macro) |
Macros de función para constantes enteras de ancho mínimo
|
INT8_C
INT16_C
INT32_C
INT64_C
|
se expande a una expresión constante entera con el valor especificado por su argumento y el tipo
int_least8_t
,
int_least16_t
,
int_least32_t
,
int_least64_t
respectivamente
(macro de función) |
|
INTMAX_C
|
se expande a una expresión constante entera con el valor especificado por su argumento y el tipo
intmax_t
(macro de función) |
|
UINT8_C
UINT16_C
UINT32_C
UINT64_C
|
se expande a una expresión constante entera con el valor especificado por su argumento y el tipo
uint_least8_t
,
uint_least16_t
,
uint_least32_t
,
uint_least64_t
respectivamente
(macro de función) |
|
UINTMAX_C
|
se expande a una expresión constante entera con el valor especificado por su argumento y el tipo
uintmax_t
(macro de función) |
#include <stdint.h> UINT64_C(0x123) // podría expandirse a 0x123ULL o 0x123UL
Constantes de macro de formato
|
Definido en el encabezado
<inttypes.h>
|
Constantes de formato para la familia de funciones fprintf
Cada una de las
PRI
macros enumeradas aquí está definida si y solo si la implementación define el nombre de tipo correspondiente.
|
Equivalente
para int o unsigned int |
Descripción | Macros para tipos de datos | ||||
|---|---|---|---|---|---|---|
[u]int
x
_t
|
[u]int_least
x
_t
|
[u]int_fast
x
_t
|
[u]intmax_t
|
[u]intptr_t
|
||
d
|
salida de un valor entero decimal con signo | PRId x | PRIdLEAST x | PRIdFAST x | PRIdMAX | PRIdPTR |
i
|
PRIi x | PRIiLEAST x | PRIiFAST x | PRIiMAX | PRIiPTR | |
u
|
salida de un valor entero decimal sin signo | PRIu x | PRIuLEAST x | PRIuFAST x | PRIuMAX | PRIuPTR |
o
|
salida de un valor entero octal sin signo | PRIo x | PRIoLEAST x | PRIoFAST x | PRIoMAX | PRIoPTR |
x
|
salida de un valor entero hexadecimal en minúsculas sin signo | PRIx x | PRIxLEAST x | PRIxFAST x | PRIxMAX | PRIxPTR |
X
|
salida de un valor entero hexadecimal en mayúsculas sin signo | PRIX x | PRIXLEAST x | PRIXFAST x | PRIXMAX | PRIXPTR |
Constantes de formato para la familia de funciones fscanf
Cada una de las
SCN
macros listadas aquí está definida si y solo si la implementación define el nombre de tipo correspondiente y tiene un modificador de longitud
fscanf
adecuado para el tipo.
|
Equivalente
para int o unsigned int |
Descripción | Macros para tipos de datos | ||||
|---|---|---|---|---|---|---|
[u]int
x
_t
|
[u]int_least
x
_t
|
[u]int_fast
x
_t
|
[u]intmax_t
|
[u]intptr_t
|
||
d
|
entrada de un valor entero decimal con signo | SCNd x | SCNdLEAST x | SCNdFAST x | SCNdMAX | SCNdPTR |
i
|
entrada de un valor entero con signo (la base se determina por los primeros caracteres analizados) | SCNi x | SCNiLEAST x | SCNiFAST x | SCNiMAX | SCNiPTR |
u
|
entrada de un valor entero decimal sin signo | SCNu x | SCNuLEAST x | SCNuFAST x | SCNuMAX | SCNuPTR |
o
|
entrada de un valor entero octal sin signo | SCNo x | SCNoLEAST x | SCNoFAST x | SCNoMAX | SCNoPTR |
x
|
entrada de un valor entero hexadecimal sin signo | SCNx x | SCNxLEAST x | SCNxFAST x | SCNxMAX | SCNxPTR |
Ejemplo
Véase también la nota de compatibilidad de C++ respecto a los espacios antes de las macros de formato utilizadas en este ejemplo.
Salida posible:
8 lld -9223372036854775808 +9223372036854775807 +7
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.8.1 Macros para especificadores de formato (p: TBD)
-
- 7.18 Tipos enteros <stdint.h> (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.8.1 Macros para especificadores de formato (p: 158-159)
-
- 7.18 Tipos enteros <stdint.h> (p: 212-216)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.8.1 Macros para especificadores de formato (p: 217-218)
-
- 7.18 Tipos enteros <stdint.h> (p: 289-295)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.8.1 Macros para especificadores de formato (p: 198-199)
-
- 7.18 Tipos enteros <stdint.h> (p: 255-261)
Véase también
|
Documentación de C++
para
Tipos de enteros de ancho fijo
|
|
|
Documentación de C++
para
Literales definidos por el usuario (
nota sobre macros de formato
)
|