1.6. Variables y tipos de datosTIPOS DE DATOS. Siempre que arranquemos a estudiar un nuevo compilador lo primero que debemos analizar, a mi entender, son los tipos de datos disponibles. Ello nos permitirá tener control sobre el dimensionamiento de las variables determinando que tamaños y rangos de datos podremos almacenar en ellas.
Los puntos a tener en cuenta sobre los tipos de datos son los siguientes:
* Nombre del tipo y su correspondiente nombre estandarizado
* Existencia de tipos para almacenar números enteros y reales
* Tamaño en bits
* Tipo aritmético (si es con o sin signo)
* Comportamiento del tipo aritmético por defecto (si no especificamos si el tipo es con o sin signo ¿cual es el comportamiento?)
* Rango de valores que podremos almacenar
En XC8 tenemos los siguientes tipos para almacenar datos numéricos "enteros" (sin decimales), a saber:
En la tabla pueden ver que puse el nombre estandarizado de cada tipo. Ya que es más fácil de visualizar un
int16 que un
signed int o
int32 que
signed long (ya veremos como utilizar los nombres estandarizados en nuestro código).
Hay que tener en cuenta que los tipos de datos:
bit y
short long no son tipos estandar de C. Y el que tipo
long long es C99 Standard. El tipo bit tiene ciertas limitaciones que ya veremos.
Tipos con signo o sin signo. Si el signo no se especifica junto al tipo de dato, el tipo de dato por defecto será signado con excepción del tipo
char que por defecto es
unsigned o sin signo. El tipo
bit siempre se lo toma no signado.
Los rangos disponibles nos permitirán elegir eficientemente que tipo debemos utilizar al diseñar nuestro código. Por ejemplo para almacenar los días dentro de un mes (de 1 a 31) con un tipo
char (int8) nos alcanzará. Pero si queremos almacenar los días consecutivos dentro de un año (de 1 a 365) ya no nos alcanzará debiendo utilizar un
signed int (int16).
Para almacenar el kilometraje de un auto ya no nos alcanzará con un
signed int (int16) y deberemos elegir un tipo mayor como ser
signed short long (int24). Y si queremos almacenar los habitantes de un país nos quedamos cortos con un
short long (int24) debiendo utilizar para ello un
unsigned long long (int32) pudiendo almacenar hasta 4.294.967.295 habitantes.
En
XC8 también contamos con tipos para almacenar datos numéricos "reales" o flotantes, a saber:
24-bit y
32-bit floating-point types. Por ahora sólo debemos saber que existen además
float y
double. Más adelante ampliaremos.
Gracias a Jukinch por el excelente aporte a este capítulo!