Está en la página 1de 4

Programación en C/Tipos de datos 1

Programación en C/Tipos de datos


Historia
En el lenguaje C estandarizado como C89, existían cuatro tipos de datos básicos que son: los números enteros, los
números reales, los caracteres, y los punteros. A partir del estándar C99 se agregan: los valores lógicos (verdadero o
falso) y los números complejos.
Estos tipos de datos son parte del lenguaje, y por ello se los considera primitivos. Más adelante veremos que con el
uso de estructuras y uniones es posible crear tipos compuestos de datos a partir de estos tipos primitivos.
En este capítulo veremos los enteros, los reales y los caracteres. Más adelante se verán otros tipos de datos más
complejos, como son los vectores, las cadenas de caracteres, y los punteros en general.

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.
Es decir que para el lenguaje C existen diferentes tamaños de números enteros que, según el compilador y la
plataforma de hardware, pueden tener desde 1 byte hasta 8 bytes (para más detalles busca en la referencia).
Además, el lenguaje C hace la distinción de si el entero es con signo o sin signo (signed o unsigned). La forma de
declarar un entero es con uno de los tipos de datos que sean enteros según el tamaño que se quiera. 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.
Sólo a modo de ejemplo, la representación en memoria de un -8 en una variable de 2 bytes, entera, con signo sería la
siguiente:
1111111111111000
Nótese que no se ha tenido en cuenta el endianness de la arquitectura.
Programación en C/Tipos de datos 2

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.
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 255 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.
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';
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 algunas
situaciones particulares se utiliza el tipo char para contadores, porque permite que ocupen sólo un byte en memoria.
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. Por
Programación en C/Tipos de datos 3

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.
Fuentes y contribuyentes del artículo 4

Fuentes y contribuyentes del artículo


Programación en C/Tipos de datos  Fuente: http://es.wikibooks.org/w/index.php?oldid=166725  Contribuyentes: Alhen, Dferg, Don Quijote, Gargo, Javier Carro, Juliancolton, M.estarellas,
ManuelGR, Margamanterola, Maxy, Rafael.galvez.vizcaino, Wutsje, 64 ediciones anónimas

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported
http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/

También podría gustarte