Incluso si los 8 bits del procesador sólo admite el manejo de datos a 8 bits, el compilador se encargará de todo el material necesario para la 16 bits de la suma y la transmisión de datos, por lo que el tamaño en bits de tipo int, a corto o a otros que son puramente basado en sus compiladores configuración.
Normalmente, puede encontrar esta información en algún lugar en el compilador manual.
Para salir de este problema, es una buena práctica de no utilizar el compilador de los tipos definidos directamente. Es posible que desee incluir stdint.h (si está disponible), el cual proporciona claramente mencionados tipos de datos, tales como uint8_t que es un entero sin signo de 8 bits.
Si no puede utilizar esta, crear su propia versión de la misma y crear un encabezado con algo a lo largo de esas líneas (o obtén un completo stdint.h y adaptarlo a tu compilador):
typedef unsigned char uint8_t
donde por supuesto, tienen que comprobar su compilador manual para obtener el derecho compilador tipos.
Este wikibook da una buena explicación de stdint.h.
Hay algunos problemas, aunque, como especialmente para dispositivos embebidos que no todos los tipos de datos son compatibles con todos los compiladores. De 64 bits tipos de datos son a menudo ausente, por lo que hay dos resultados posibles: o bien el programa no compilará más (creo que es el buen caso) o que alguien lo ha typedef
ed el de 64 bits tipo de datos a una más pequeña y su programa puede devolver resultados inesperados debido a que.
En mi opinión, si un tipo de datos no es compatible debería conducir a un error de compilación, por lo que el programador es realmente conscientes del problema antes de golpear en el sistema.
Como un ejemplo en donde encontrar esa información para un compilador:
El IAR Embedded Workbench viene con un montón de documentación, para este tipo de información, usted tiene que mirar en la Guía de Desarrollo, y allí, bajo la Referencia de la Información que se encuentra la representación de Datos. En ese punto usted encontrará todos los detalles necesarios para manejar correctamente los datos. La alineación, el Tamaño y el Rango son todos los que allí se indican.
Data type Size Range Alignment
bool 8 bits 0 to 1 1
char 8 bits 0 to 255 1
...
signed long long 64 bits -2^63 to 2^63-1 8
unsigned long long 64 bits 0 to 2^64-1 8