Tema 4a
Tipos de datos simples
IWI-131 - Tema 4
Tipos de datos básicos
• Las variables y constantes deben definir un tipo.• Una vez definido el tipo, no se puede cambiar de
opinión.• El tipo define el comportamiento de los
operadores.• Tres grandes grupos
– Numéricos– Alfabéticos– Enumerados
IWI-131 - Tema 4
Tipo de dato nulo
• void– Indica “nada”– Es un variable sin tipo definido– Cuando una función o programa no retorna
ningún resultado final se dice que devuelve el tipo void.
IWI-131 - Tema 4
Tipos de datos numéricos
• Por defecto los números se utilizan en base decimal.
• Internamente se trabaja con números en base binaria.
• Dos grandes diferencias– Enteros– Reales
• Es importante definir el espacio necesario para almacenar un número.
IWI-131 - Tema 4
Tipos de datos numéricos
• Entero– int
• Real– float
• Real con doble precisión– double
IWI-131 - Tema 4
Modificadores
• Para modificar el tamaño de almacenamiento se utilizan tipos de datos modificados
• Modificadores– signed: reserva un bit para el signo– unsigned: define solo valores positivos– long: utiliza el mayor tamaño disponible– short: utiliza el menor tamaño disponible
IWI-131 - Tema 4
Tipos de datos numéricos
• int– Tipo de dato entero– Valores positivos y negativos– Se almacena en 2 o 4 bytes
• short int (16 bits): -32.768 a 32.768
• long int (32 bits): -2.147.483.648 a 2.147.483.648
• unsigned int (32 bits): 0 a 4.294.967.296– Se puede abreviar como “unsigned”
IWI-131 - Tema 4
Tipos de datos numéricos
• float– Tipo de dato real– Precisión simple– Valores positivos y negativos– Se almacena en 4 bytes
• 37 dígitos para parte entera
• 6 dígitos para parte decimal
– No acepta modificadores
IWI-131 - Tema 4
Tipos de datos numéricos
• double– Tipo de dato real– Precisión doble– Valores positivos y negativos– Se almacena en 8 bytes
• 37 dígitos para parte entera
• 10 dígitos para parte decimal
– long double (10 bytes)
IWI-131 - Tema 4
Tipos de datos numéricos
void main(){
int a = -10;
unsigned int b = 10;
float c = 10.1;
double d = 0.000000001;
}
IWI-131 - Tema 4
Tipos de datos alfabéticos
• Cualquier símbolo escrito se puede considerar alfabético
• En rigor– a..z
– A..Z
– !”.,$%&/)(^*{} etc.
• Alfanuméricos– Se agregan los dígitos como símbolos, no como
números.
IWI-131 - Tema 4
Tipos de datos alfabéticos
• char– Almacena cualquier carácter “normal”– Ocupa un byte
• Permite diferenciar 256 caracteres.• signed char: -127 a 127• unsigned char: 0 a 256
– El valor almacenado es el código ASCII que representa el carácter
• Ej: @ = 64 , \ = 92 , A = 65
IWI-131 - Tema 4
Tipos de datos alfabéticos
void main(){
char c1 = 'a';
char c2 = '8';
char c3 = '\n';
char c4 = 64;
char c5 = '0';
char c6 = '1';
char c7 = '2';
printf("%c %c %c %c \n",c1,c2,c3,c4);
printf("%i %i %i \n",c5,c6,c7);
}
a 8 @48 49 50
IWI-131 - Tema 4
Conversiones de tipo
• Al mezclar distintos tipos, hay que buscar un común denominador– Un tipo donde todo el resto pueda ser
representado
• Para esto, hay que convertir los valores involucrados al mayor tipo presente
• Esto se denomina promoción de tipo
IWI-131 - Tema 4
Conversiones de tipo
• Rangos de tipos– long double– louble– float– unsigned long– long– unsigned int
IWI-131 - Tema 4
Cast (molde)
• Se puede forzar al compilador para hacer una conversión de tipos.
• Se vera su utilidad al estudiar los operadores.
void main(){double d1=4.7, d2=2.4;int i = ((int)d1)/((int)d2);
printf("%d\n", i);}
IWI-131 - Tema 4
Tipos de datos enumerados
• A diferencia de números y caracteres no existe necesariamente una relación de orden.
• Ej:– Chileno– Argentino– Peruano– Boliviano
• En C, las enumeraciones se almacenan como enteros.
• Se pueden definir sus valores numéricos.
IWI-131 - Tema 4
Tipos de datos enumerados
enum nombre {tipo1,tipo2,…,tipoN};
Palabra reservada
El nombre de la enumeracion
Elementos de la enumeración
IWI-131 - Tema 4
Tipos de datos enumerados
enum nombre {tipo1,tipo2=100,tipo3,…};
Valor numérico del elemento
Aumenta de uno en uno
Tipo1=0Tipo2=100Tipo3=101…
IWI-131 - Tema 4
Tipos de datos enumeradosenum nacionalidad {argentino=25, chileno, peruano, boliviano};
void main(){enum nacionalidad persona1;enum nacionalidad persona2;int chiliviano;
persona1 = chileno;persona2 = boliviano;chiliviano = persona1+persona2;printf("%d + %d\n = %d", persona1, persona2, chiliviano);
}
26 + 28 = 54
Fin tema 4a
Tipos de datos simples