2. 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
3. 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.
4. 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.
5. IWI-131 - Tema 4
Tipos de datos numéricos
• Entero
– int
• Real
– float
• Real con doble precisión
– double
6. 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
7. 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”
8. 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
9. 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)
10. 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;
}
11. 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.
12. 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
14. 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
15. IWI-131 - Tema 4
Conversiones de tipo
• Rangos de tipos
– long double
– louble
– float
– unsigned long
– long
– unsigned int
16. 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("%dn", i);
}
17. 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.
18. 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
19. 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=0
Tipo2=100
Tipo3=101
…