Tipos de datos básicos Tema 4a Tipos de datos simples • 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. 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 IWI-131 - Tema 4 Tipos de datos numéricos Modificadores • Para modificar el tamaño de almacenamiento se utilizan tipos de datos modificados • Modificadores • Entero – int • Real – float • Real con doble precisión – double IWI-131 - Tema 4 – – – – 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 1 Tipos de datos numéricos • int Tipos de datos numéricos • float – 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 • 37 dígitos para parte entera • 6 dígitos para parte decimal – Se puede abreviar como “unsigned” – No acepta modificadores IWI-131 - Tema 4 IWI-131 - Tema 4 Tipos de datos numéricos Tipos de datos numéricos • double – – – – Tipo de dato real Precisión simple Valores positivos y negativos Se almacena en 4 bytes Tipo de dato real Precisión doble Valores positivos y negativos Se almacena en 8 bytes void main(){ int a = -10; unsigned int b = 10; float c = 10.1; double d = 0.000000001; } • 37 dígitos para parte entera • 10 dígitos para parte decimal – long double (10 bytes) IWI-131 - Tema 4 IWI-131 - Tema 4 Tipos de datos alfabéticos 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 • 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 2 Tipos de datos alfabéticos void main(){ char c1 = 'a'; a 8 char c2 = '8'; @ char c3 = '\n'; 48 49 50 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); } • 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 IWI-131 - Tema 4 Conversiones de tipo Cast (molde) • Rangos de tipos – – – – – – Conversiones de tipo • Se puede forzar al compilador para hacer una conversión de tipos. • Se vera su utilidad al estudiar los operadores. long double louble float unsigned long long unsigned int 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 } IWI-131 - Tema 4 Tipos de datos enumerados El nombre de la enumeracion enum nombre {tipo1,tipo2 ,…,tipoN}; Elementos de la enumeración • En C, las enumeraciones se almacenan como enteros. • Se pueden definir sus valores numéricos. IWI-131 - Tema 4 Palabra reservada IWI-131 - Tema 4 3 Tipos de datos enumerados Tipos de datos enumerados enum nacionalidad {argentino=25, chileno, peruano , boliviano}; Valor numérico del elemento void main(){ enum nacionalidad persona1; enum nacionalidad persona2; int chiliviano ; enum nombre {tipo1,tipo2=100,tipo3,…}; persona1 = persona2 = chiliviano printf("%d Aumenta de uno en uno chileno ; boliviano; = persona1+persona2; + % d\n = %d", persona1, persona2, chiliviano); } Tipo1=0 Tipo2=100 Tipo3=101 … IWI-131 - Tema 4 26 + 28 = 54 IWI-131 - Tema 4 Fin tema 4a Tipos de datos simples 4