Page 144

2.5 Definici´ on de nuevos tipos de datos

Los cambios de tipos y sus consecuencias Te hemos dicho que typedef permite definir nuevos tipos y facilita sustituir un tipo por otro en diferentes versiones de un mismo programa. Es cierto, pero problem´ atico. Imagina que en una aplicaci´ on definimos un tipo edad como un car´ acter sin signo y que definimos una variable de dicho tipo cuyo valor leemos de teclado: 1

#include <stdio.h>

2 3

typedef unsigned char TipoEdad;

4 5 6 7

int main(void) { TipoEdad mi_edad ;

8

printf ("Introduzca edad: "); scanf ("%hhu", &mi_edad ); printf ("Valor le´ ıdo %hhu\n", mi_edad );

9 10 11 12

return 0;

13 14

}

¿Qu´e pasa si, posteriormente, decidimos que el tipo TipoEdad debiera ser un entero de 32 bits? He aqu´ı una versi´ on err´ onea del programa: 1

#include <stdio.h>

2 3

typedef int TipoEdad;

4 5 6 7

int main(void) { TipoEdad mi_edad ;

8

printf ("Introduzca edad: "); scanf ( "%hhu" , &mi_edad ); // Mal! printf ( "Valor le´ ıdo %hhu\n" , mi_edad ); // Mal!

9

!

10

!

11 12

return 0;

13 14

}

¿Y por qu´e es err´ oneo? Porque debi´eramos haber modificado adem´ as las marcas de formato de scanf y printf : en lugar de %hhu deber´ıamos usar ahora %d. C no es un lenguaje id´ oneo para este tipo de modificaciones. Otros lenguajes, como C++ soportan de forma mucho m´ as flexible la posibilidad de cambiar tipos de datos, ya que no obligan al programador a modificar un gran n´ umero de l´ıneas del programa.

138

Introducci´ on a la Programaci´ on con C

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement