Los enteros, flotantes y caracteres son los tipos de datos primitivos en C. Los enteros se usan para números enteros y pueden ser short, int, long o long long. Los flotantes representan números reales usando coma flotante y son float o double. Los caracteres usan char para representar los 256 caracteres en una tabla.
Tipos de datos en C: enteros, flotantes y caracteres
1.
2. Enteros
Los enteros son el tipo de dato más primitivo en C. Se usan para representar números
enteros. Pero siempre se pueden encontrar otras aplicaciones para los números enteros.
En general se pueden usar para representar cualquier variable discreta.
Los tipos de datos enteros son: short, int, long y long long , cada uno representando un
número entero de un tamaño o capacidad determinado. Según el compilador y la plataforma
de hardware, cada uno de estos tipos de dato puede ocupar desde 1 byte hasta 8 bytes en
memoria (para más detalles busca en la referencia).
Además, el lenguaje C hace la distinción de si el entero es con signo ( signed ) o sin signo
(unsigned ). En caso de que no se declare si es con signo o sin signo, se toma con signo.
Algunos ejemplos de declaraciones de enteros:
int a;
unsigned int a;
signed long a;
signed long long a = 10000000;
Todos los números son representados en memoria mediante una cadena de bits. En el caso
de los números con signo, el bit más significativo es el que se usa para representar el
signo. La representación de los números negativos se realiza mediante el complemento a
dos, que es una técnica que permite operar con los números negativos de forma lógica.
A modo de ejemplo, la representación en memoria del número -8 en una variable de 2
bytes, entera, con signo, sería la siguiente:
1111111111111000
Flotantes
Se denomina flotantes a los tipos de datos que representan a los números reales, ya que
utilizan un sistema de representación basado en la técnica de coma flotante, que permite
operar con números reales de diversas magnitudes, mediante un número decimal
llamado mantisa y un exponente que indica el orden de magnitud.
El tipo de dato flotante en lenguaje C sólo tiene dos tamaños: el float y el double , que son
4 bytes y 8 bytes respectivamente. Se los puede utilizar tanto para representar números
decimales, como para representar números enteros con un orden de magnitud muy grande.
3. La forma de declarar una variable flotante es escribiendo en una línea uno de los tipos de
datos flotantes y a continuación el nombre de la variable y tal vez algún valor que se les
quiera dar.
Algunos ejemplos:
float a;
double a = 1e23;
double a = 3.1416;
float a = 4e-9;
double a = -78;
Hay que tener en cuenta que aunque los valores flotantes son más convenientes para
algunas aplicaciones, hay casos en los que se prefieren los enteros. Esto se debe a que los
números flotantes no necesariamente tienen soporte de hardware, en particular en las
plataformas integradas. Una alternativa que se utiliza en estas situaciones es interpretar
los enteros como decimales de forma que 150 se interprete como 1.5 y 2345 como 23.45.
Para el caso de los flotantes de 4 bytes, se utiliza 1 bit para el signo, 8 bits para el
exponente y 23 bits para el valor del número. El procedimiento para almacenar un número
en una variable flotante es el siguiente:
1. Se convierte a binario la parte entera.
2. Se coloca el signo en el bit más significativo de la misma manera que en los enteros
(1 para el - y 0 para el +).
3. Se mueve la coma (en la representación binaria de la parte entera) hasta que esté
a la derecha del primer uno y éste se descarta (el uno más significativo). El valor
del exponente será el número de posiciones que se movió la coma. El exponente usa
la representación de un entero con complemento a dos.
4. Se convierte en binario la parte decimal del número. Esto usando el peso de los
bits. el bit decimal más significativo vale 1/2, el siguiente vale 1/4, el otro 1/8, el
otro 1/16 y así hasta completar lo que falta para los 23bits del valor.
5. Se concatena todo y ese es el valor flotante representado en memoria.
Caracteres
Los caracteres se representan utilizando el tipo char, que tiene sólo 1 byte de tamaño.
Este tipo se utiliza para representar los 256 caracteres de la tabla de caracteres del
sistema. El tipo char es también un tipo entero, ya que puede tomar valores de 0 a 255.
Por lo tanto también puede ser signed o unsigned .
4. En cuanto a la forma de declarar variables de tipo char es la misma forma que con los
otros tipos.
char a;
char a = 's';
unsigned char a = 48;
Como puedes ver, se le puede asignar un número a una variable char, ya que se trata de un
tipo entero. En muchas situaciones se utiliza el tipo char para almacenar números
pequeños, ya que ocupa en memoria sólamente un byte.
Es importante notar que con la llegada de la codificación UTF-8, los caracteres de los
diversos idiomas pueden ocupar 1, 2, 3 o 4 bytes, de modo que el tipo char ya no alcanza
para la representación de todos los caracteres posibles. Por ello, el estándar C99
introduce el tipo wchar que puede ocupar más de 1 byte, según sea necesario para la
codificación utilizada por el sistema.