Saltar al contenido

Diferencia entre int32, int, int32_t, int8 e int8_t

Solución:

Entre int32 y int32_t, (e igualmente entre int8 y int8_t) la diferencia es bastante simple: el estándar C define int8_t y int32_t, pero no define nada llamado int8 o int32 – este último (si es que existe) es probablemente de algún otro encabezado o biblioteca (lo más probable es que sea anterior a la adición de int8_t y int32_t en C99).

Sencillo int es bastante diferente a los demás. Dónde int8_t y int32_t cada uno tiene un tamaño específico, int puede ser de cualquier tamaño> = 16 bits. En diferentes momentos, tanto 16 bits como 32 bits han sido razonablemente comunes (y para una implementación de 64 bits, probablemente debería ser de 64 bits).

Por otra parte, int está garantizado para estar presente en cada implementación de C, donde int8_t y int32_t no son. Sin embargo, es probable que se cuestione si esto te importa. Si usa C en pequeños sistemas integrados y / o compiladores más antiguos, puede ser un problema. Si lo usa principalmente con un compilador moderno en máquinas de escritorio / servidor, probablemente no lo será.

Vaya, me perdí la parte sobre char. Usarías int8_t en lugar de char si (y solo si) desea que se garantice que un tipo entero tenga exactamente 8 bits de tamaño. Si desea almacenar caracteres, probablemente desee utilizar char en lugar de. Su tamaño puede variar (en términos de número de bits) pero se garantiza que sea exactamente un byte. Sin embargo, una pequeña rareza: no hay garantía de si un char está firmado o sin firmar (y muchos compiladores pueden convertirlo en uno, dependiendo de un indicador de tiempo de compilación). Si necesita asegurarse de que esté firmado o sin firmar, debe especificarlo explícitamente.

Los tipos de datos _t son tipos typedef en el encabezado stdint.h, mientras que int es un tipo de datos fundamental integrado. Esto hace que _t esté disponible solo si stdint.h existe. int por otro lado está garantizado para existir.

Siempre tenga en cuenta que el ‘tamaño’ es variable si no se especifica explícitamente, así que si declara

 int i = 10;

En algunos sistemas puede resultar en un entero de 16 bits por compilador y en otros puede resultar en un entero de 32 bits (o entero de 64 bits en los sistemas más nuevos).

En entornos embebidos, esto puede dar lugar a resultados extraños (especialmente al manejar E / S mapeadas en memoria o puede considerarse una situación de matriz simple), por lo que se recomienda encarecidamente especificar variables de tamaño fijo. En los sistemas heredados puede encontrarse

 typedef short INT16;
 typedef int INT32;
 typedef long INT64; 

A partir de C99, los diseñadores agregaron el archivo de encabezado stdint.h que esencialmente aprovecha typedefs similares.

En un sistema basado en Windows, puede ver las entradas en el archivo de encabezado stdin.h como

 typedef signed char       int8_t;
 typedef signed short      int16_t;
 typedef signed int        int32_t;
 typedef unsigned char     uint8_t;

Hay mucho más en eso, como entero de ancho mínimo o tipos de entero de ancho exacto, creo que no es malo explorar stdint.h para una mejor comprensión.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *