Básicos | Numéricos | Enteros | int | |
---|---|---|---|---|
Reales | Precisión simple | float | ||
Doble precisión | double | |||
Caracteres | char | |||
Vacíos | void | |||
Derivados | Punteros | |||
Estructurados | Complejos | Estéticos | Tablas y caracteres | |
Dinámicos | Lineales | Pistas | ||
Listas | ||||
Colas | ||||
No lineales | Árboles | |||
Grafos | ||||
Compuestos | Uniones | |||
Enumeraciones | ||||
Estructuras | ||||
Campos de bits | ||||
Datos definidos por el usuario | typedef |
Vamos a ver una pequeña descripción de los tipos de datos básicos:
Los enteros son números sin parte decimal (1; 2; 3...) y pueden ser o positivos o negativos. Pero el rango de valores de los números enteros no es infinito, es el rango de valores que puede manipularse con instrucciones básicas del lenguaje de máquina y es simétrico en torno al cero. Veamos en una tabla el rango de valores de los números enteros en función del tamaño de palabra:
Tamaño de palabra | Rango de valores |
---|---|
16 bits | -32.768 - 0 - 32767 |
32 bits | -2.147.483.648 - 0 - 2.147.483.647 |
64 bits | -9.223.372.036.854.775.808 - 0 - 9.223.372.036.854.775.807 |
Las operaciones que podremos realizar con este tipo de dato son las operaciones aritméticas básicas (suma, resta, multiplicación y división) pero teniendo en cuenta un detalle en la división:
El resultado de una división entre números enteros siempre va a ser un número entero, se desprecian los decimales (10/3=3).
Podremos sacar el módulo o resto de la división con el símbolo % (10%3=1) y al igual que en aritmética se cumple que dividendo = divisor * cociente + resto, en C se cumple que a = b * (a/b) + (a%b), o lo que es lo mismo con el ejemplo antes usado: 10 = 3 * (10/3) + (10%3).
Los datos de tipo real son números con decimales. Y al igual que los datos de tipo entero, pueden ser positivos o negativos y también tienen un rango, que puede cambiar de una plataforma a otra, los más habituales son:
Tamaño de palabra; precisión | Rango de valores reales |
---|---|
32 bits; 6 cifras decimales | -3.438 - -1.2-38 0 1.2-38 - 3.438 |
64 bits; 15 cifras decimales | -1.7308 - -2.3-308 0 2.3-308 - 1.7308 |
Como su propio nombre indica, este tipo de dato son los caracteres. Los caracteres son almacenados internamente con un valor entero (numérico) que es su código, por lo que cada caracter va a tener un código propio. Estos códigos junto con el caracter que representan se establecen en una tabla llamada charset o tabla de caracteres. Alguna de las tablas de caracteres más utilizadas son:
Tabla de caracteres | Tamaño caracter | Repertorio de caracteres |
---|---|---|
ASCII | 7 bits | Letras inglesas mayúsculas y minúsculas, algunos signos de puntuación y códigos de control |
ISO-8859-1 (Latin-1) | 8 bits | Incluye lo mismo que la anterior, con letras con acentos y nuevos signos de puntuación |
UNICODE-BMP | 16 bits | Incluye lo mismo que la anterior, con los alfabetos griego, cirílico, árabe, chino, signos matemáticos... |
UNICODE | 32 bits | Incluye casi la totalidad de caracteres utilizados en cualquier idioma o notación actual |
Las tablas son compatibles entre sí porque, como vemos, la siguiente contiene a las anteriores.
Las funciones o variables de este tipo no devuelven ni admiten ningún valor.