You are on page 1of 13

Tipos de Datos

Hay dos clases de tipos: tipos fundamentales y tipos derivados.

Tipos fundamentales:
Hay varios tipos fundamentales de datos. Los ficheros de cabecera
limits.h y float.h especifican los valores máximo y mínimo para cada
tipo. Los podemos clasificar en:

Tipos enteros: char, short, int, long y enum.


Tipos reales: float, double y long doublé.
Otros: void

Cada tipo entero puede ser calificado por las palabras clave signed o
unsigned, lo que da lugar a tener disponibles los siguientes tipos extras:

signed char, unsigned char


signed short, unsigned short
signed int, unsigned int
signed long, unsigned long

Un entero clasificado signed es un entero con signo, esto es, un número


entero positivo o negativo. Un número entero calificado unsigned es un
número entero sin signo, el cual es manipulado como un número entero
positivo.

Si los modificadores signed y unsigned se utilizan sin un tipo específico,


se asume el tipo int. Por este motivo, las siguientes declaraciones son
equivalentes:

signed x;
signed int x;

unsigned y;
unsigned int y:

char (character – 1 byte)

El tipo char es utilizado para almacenar un valor entero en el rango -128


a 127, correspondiente a un carácter del código ASCII. Solamente los
valoes 0 a 127 son equivalentes a un carácter.
De forma similar el tipo unsigned char puede almacenar valores en el
rango de 0 a 255, valores correspondientes a los números ordinales de
los 256 caracteres ASCII.

En ASCI C, signed y unsigned char son tipos diferentes.


Ejemplo:
char car;

Este ejemplo declara una variable car de tipo char, capaz de contener un
carácter cuyo código ASCII se corresponderá con un valor entero entre 0
y 127.

short (entero formato corto – 2 bytes)

El tipo short proporciona un entero en el rango de valores de


-32768 a 32767 (-2E15 a 2E15 -1)

De forma similar el tipo unsigned chort puede almacenar valores en el


rango de 0 a 6555 (0 a 2E16-1).

Ejemplo:
short i, j;

Este ejemplo declara i y j, como variables enteras con posibilidad de


tomar valores entre -32768 y 32767.

int (entero)

Un entero es para C un número sin punto decimal. El rango de valores


depende de la máquina con un procesador de 16 bits el rango de valores
es de:

-32768 a 32767 (-2E15 a 2E15 -1) para el tipo int.


0 a 65535 (0 a 2E16 -1) para el tipo unsigned.

El uso de enteros produce un código compacto y rápido. Para una


máquina de 16 bits este tipo es equivalente al tipo short y solamente
ocupa 2 bytes de memoria. En general:
tamaño(short) ≤ tamaño(int)

Ejemplo:
Int n, x;

Este ejemplo declara las variables n y x de tipo entero.

long (entero formato largo – 4 bytes)

Este tipo de números es idóneo para aplicaciones de gestión. Al igual


que los enteros, son números sin punto decimal comprendidos en el
rango de:

-2147483648 a 2147483647 (-2E31 a 2E31 -1) para el tipo long.


0 a 4294967295 (0 a 2E32 -1) para el tipo unsigned long.

En general
tamaño(int) ≤ tamaño(long)

Ejemplo:
long n, m;

Este ejemplo declara las variables n y m de tipo entero, pudiendo tomar


valores entre
-2147483648 y 2147483647.

enum

La declaración de un tipo enumerado es simplemente una lista de


valores que pueden ser tomados por una variable de ese tipo. Los
valores del tipo enumerado se representan con identificadores, que
serán las constantes del nuevo tipo.

Ejemplo:

enum dia_semana
{
lunes,
martes,
miércoles,
jueves,
viernes,
sabado,
domingo
} hoy;
dia_semana ayer;

Este ejemplo declara las variables hoy y ayer del tipo enumerado
dia_semana. Estas variables pueden tomar cualquier valor de los
especificados, lunes ... domingo. El valor ordinal de lunes es 0. Los
elementos que aparecen enumerados en la lista son considerados como
constantes enteras.

Creación de una enumeración

Crear una enumeración es definir un nuevo tipo de datos, denominado


tipo enumerado y declarar una variable de este tipo. La sintaxis es la
siguiente:

enum tipo_enumerado
{
definición de nombres de constantes enteras
};

tipo_enumerado es un identificador que nombra el nuevo tipo definido.

Después de definir un tipo enumerado, podemos declarar una o más


variables de ese tipo, de la forma:

[enum] tipo_enumerado [variable[, variable]...];

Ejemplo: enum colores


{
Azul, amarillo, rojo, verde, blanco, negro
};
enum colores color;

Aquí creamos un tipo enumerado cuyo rango esos colores.Pero para


crear una variable de ese tipo, utilizamos aparte “enum colores color”. A
cada valor del tipo enumerado se le asigna un numero entero que, si no
se especifica lo contrario, empezará por el cero e irá ascendiendo. Azul
= 0, amarillo = 1, rojo = 2...
float (reales en simple precisión – 4 bytes)

Estos números son los más recurridos en un lenguaje de programación.


Un real en simple precisión es un número que puede tener un punto
decimal y que puede estar comprendido en el rango de:

- 3.40E +38 a -1.17E -37 para números negativos


1.17E -37 a 3.40E +38 para números positivos

Un número real en simple precisión no tiene más de 7 dígitos


significativos.

Ejemplo:
float x;

Este ejemplo declara la variable x de tipo real en simple precisión.

double (reales en doble precisión – 8 bytes)

Un número real en doble precisión es un número que puede tener un


punto decimal y puede estar comprendido en el rango de:

-1.79E + 308 a -2.22E – 307 para números negativos


2.22E – 307 a 1.79E + 308 para números positivos

Un número real en doble precisión tiene hasta 15 digitos significativos.


Esto da lugar a cálculos más exactos que en simple precisión.

Ejemplo:
double x;

Este ejemplo declara la variablex de tipo real en doble precisión.

long double (reales doble precisión formato largo – 8bytes)

Para este compilador, este tipo es igual al tipo double.


void

El tipo void se utiliza para declarar funciones que no retornan un valor o


para declarar un puntero a un tipo no especificado. Si void aparece entre
paréntesis a continuación del nombre de una función, no es interpretado
como un tipo. En este caso indica que la función no acepta argumentos.

Ejemplo:

double fx(void);
void fy(void);
void *p;

Este ejemplo declara la función denominada fx, como una función sin
argumentos que devuelve un valor de tipo real de doble precisión; la
función fy, como una función sin argumentos que no devuelve valor
alguno; y un puntero p a un objeto de un tipo no especificado.

Tipos derivados

Los tipos derivados son construidos a partir de los tipos fundamentales.


Algunos de ellos son los siguientes:

punteros

Un puntero es una dirección de memoria que indica dónde se localiza un


objeto de un tipo especificado. Para definir una variable de tipo puntero
se utiliza el modificador *.

Ejemplo:
int *p;
char *plineas[40];

Este ejemplo declara un puntero a un valor entero; y un array de


punteros plineas (plineas[0] a plineas[39]) a valores de tipo char.
estructuras

Una structura es una variable que representa lo que normalmente


conocemos como registro, esto es, un conjunto de uno o más campos de
igual o diferentes tipos.

Ejemplo:

struct
{
float a, b;
} complejo;

struct persona
{
char nombre[20];
char apellidos[40];
long dni;
}

persona reg;

Este ejemplo declara las variables complejo y reg, como estructuras o


registros. La variable complejo comprende los campos a y b de tipo real;
y la variable reg comprende los campos nombre y apellidos que son
cadenas de caracteres y el campo dni de tipo long.

unión
Una unión tiene la misma forma de definición que una estructura. Las
uniones, a diferencia de las estructuras, representan registros variables.
Esto quiere decir que una variable de este tipo, puede alternar entre
varios tipos.

arrays
Un array es un conjunto de objetos, todos del mismo tipo, que ocupan
posiciones sucesivas en memoria. Para definir un array se utiliza el
modificador [ ].

Ejemplo:
int lista[40]

Este ejemplo declara un array lista de 40 elementos (lista[0] a lista[39])


para almacenar valores enteros.

funciones
Una función es un subprograma C, el cual toma argumentos de unos
tipos dados y retorna objetos de un tipo dado.

clases
Una clase contiene una secuencia de objetos de varios tipos, unconjunto
de funciones para manipular estos objetos y un conjunto de restricciones
para el acceso a estos objetos y funciones.

Nombres de tipos

typedef
Permite declarar nuevos nombres de tipos de datos, esto es, sinónimos
de otros tipos ya sean fundamentales o derivados, los cuales pueden ser
utilizados más tarde para declarar variables de esos tipos.

typedef tipo_C identificador [, identificador]...;

tipo_C es cualquier tipo definido en C, fundamental o derivado.


identificador es el nuevo nombre dado a tipo_C.

Las declaraciones typedef permiten parametrizar un programa para


evitar problemas de portabilidad. Utilizando typedef con los tipos que
pueden depender de la instalación, cuando se lleve el programa a otra
instalación sólo se tendrán que cambiar estas declaraciones.

Constantes
Una constante es un valor que, una vez fijado por el compilador, no
cambia durante la ejecución del programa. Una constante en C puede
ser un número, un carácter o una cadena de caracteres.
Constantes enteras
El lenguaje C++ permite especificar un entero en base: 10, 8, 16 y 2.
En general, si la constante es positiva, el signo + es opcional y si es
negativa, lleva el signo -. El tipo de una constante entera viene
determinado por su valor. También se puede indicar explícitamente el
tipo de una constante entera, añadiendo los sufijos L, U, UL (mayúsculas
o minúsculas). Si el sufijo el L, su tipo es long cuando el valor puede ser
representado en este tipo, sino es unsigned long. Si el sufijo es U, sutipo
es unsigned int cuando el valor puede ser representado en este tipo, si
no unsigned long. Si el sufijo es UL, sutipo es unsigned long.

Una constante decimal puede tener uno o más dígitos, 0 a 9, de los


cuales el primero de ellos es distinto de cero.

Una constante octal puede tener 1 o más dígitos, 0 a 7, precedidos por 0


(cero). Su valor está comprendido en el rango:

0 a 077777 Para constantes tipo int


0100000 a 0177777 Para constantes tipo unsigned int
0200000 a 017777777777 Para constantes tipo long
020000000000 a 037777777777 Para constantes tipo unsigned long

Una constante hexadecimal puede tener 1 o más caracteres, 0 a 9 y A a


F, precedidos por 0x o 0X (cero más x). su valor está comprendido en el
rango:

0x0 a 0x7FFF Para constantes tipo int


0x8000 a 0xFFFF Para constantes tipo unsigned int
0x10000 a 0x7FFFFFFF Para constantes tipo long
0x80000000 a 0xFFFFFFFF Para constantes tipo unsigned long

Una constante binaria puede tener 1 o más dígitos, 0 a 1, precedidos por


0b o 0B (cero más b). Este tipo de constantes es una extensión de
Zortech C++ por lo que no forman parte del C++ de AT&T o de ANSI C.

Constantes reales

Una constante real está formada por una parte entera, seguida por un
punto decimal y una parte fraccionaria. También se permite la notación
científica, en cuyo caso se añade al valor una e o E, seguida por un
exponente positivo o negativo.

parte – entera.parte – fraccionaria[{e/E}{[+]/-}digitos]

donde dígitos representa cero o más dígitos del 0 al 9 y E o e es el


símbolo de exponente de la base 10 que puede ser positivo o negativo
(2E – 5 = 2 x 10-5). Si la constante real es positiva no es necesario
especificar el signo y si es negativa lleva el signo menos (-).

Constante de un solo carácter


Este tipo de constantes está formado por un único carácter encerrado
entre comillas simples. Una secuencia de escape es considerada como
un único carácter.

Ejemplo:
‘ ‘ Espacio en blanco
‘x’ Letra minúscula x
‘\n’ Nueva línea
‘\x18’ Carácter ASCII escape

Constantes o caracteres

Una constante de caracteres es una cadena de caracteres encerrados


entre comillas dobles.

Identificadores
Los identificadores son nombres dados a constantes, variables, tipos,
funciones y etiquetas de un programa. La sintaxis para formar un
identificador es la siguiente:

letra/_(letra/dígito/_)...

lo cual indica que un identificador consta de uno o más caracteres


(letras, dígitos y el carácter de subrayado) y que el primer carácter debe
ser una letra o el carácter de subrayado.
Palabras clave son identificadores predefinidos que tienen un significado
especial para el compilador C. Un identificador definido por el usuario no
puede tener el mismo nombre que una palabra clave.

El lenguaje C, tiene las siguientes palabras clave:

auto double int struct


break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

Además de las palabras clave anteriores, el compilador C++ tiene


también las siguientes:

asm friend overload tamplate


catch inline private this
class new protected virtual
delete operator public

Las palabras clave deben escribirse siempre en minúsculos.

Comentarios
Un comentario es una secuencia de caracteres utilizada para explicar el
código fuente C++ soporta comentarios estilo C y estilo C++.

Un comentario estilo C es una secuencia de caracteres cualesquiera


encerrado entre los símbolos / * y * /. Estos comentarios pueden ocupar
más de una línea, pero no pueden anidarse. Por ejemplo:

main () / * Función principal * /

Un comentario en C++ comienza con los caracteres // y termina al final


de la línea. Estos comentarios no pueden ocupar más de una línea. Por
ejemplo

main () // Función principal


Un comentario puede aparecer en cualquier lugar donde se permita
aparecer un espacio en blanco. El compilador trata un comentario como
a un espacio en blanco.

Variables
El valor de una variable, a diferencia de las constantes, puede cambiar a
lo largo de la ejecución de un programa.

La sintaxis correspondiente a la declaración de una variable es la


siguiente:

[clase] tipo identif[, identif]...

clase Representa una de las cuatro clases siguientes:


auto, register, static o extern. La clase de una
variable determina si esta tiene carácter global
(static o extern) o local (auto o register).
tipo Determina el tipo de la variable (char, int, float,
double, ...).
identif Indica el nombre de la variable.

Declaración de constantes
A la declaración de un objeto, se puede anteponer el especificador
const, con el fin de hacer que dicho objeto sea, en lugar de una variable,
una constante.

Expresiones numéricas
Una expresión es una secuencia de operadores y operandos que
especifican una operación determinada.

Ejemplo:
++a
suma + = c
cantidad * precio
7 * sqrt(a) – b / 2

Operadores
Los operadores son símbolos que indican como son manipulados los
datos. Se pueden clasificar en los siguientes grupos: aritméticos,
lógico,relacionales, unitarios, lógico para manejo de bits, de asignación,
operador ternario para expresiones condicionales y otros.

You might also like