Estos tipos de datos permiten el modificador unsigned cuya labor es definir un nuevo tipo en el que el rango de valores se restringe a la parte positiva.
ESTRUCTURAS DE DATOS DEFINIDAS POR EL USUARIO
1.- TIPOS ENUMERADOS
Un tipo enumerado o enumeración está construido por una serie de constantes simbólicas enteras. Se declara con la palabra reservada enum y una serie de enumeradores limitados por caracteres llave y separados por comas. Por defecto el primer enumerador tiene un valor 0. A cada enumerador siguiente se le atribuye un valor incrementado un valor constante en relación a su predecesor. El ejemplo siguiente asocia falso a cero y verdadero a 1.
enum {falso, verdadero}; // falso =0, verdadero =1
Esta asignación se puede cambiar:
enum {lunes=1,martes, miércoles}; //lunes=1, martes=2, miércoles=3
enum {lunes=10,martes=20,miércoles=30}
Una enumeración puede tener nombre:
enum dias {lunes, martes, miércoles};
2.- ESTRUCTURAS
Es un tipo de datos que engloba una serie de variables denominadas miembros, en la parte de la programación orientada a objetos veremos que este tipo de datos también puede contener funciones miembro.
Se declara mediante la palabra reservada struct seguida del nombre del tipo de dato que queremos declarar.
struct alumno //declaración de la estructura alumno
{
char nombre [60];
long teléfono;
int no_matricula;
};