Page 59

1 Introducci´on a C

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

5 6 7

int main(void) { int opcion;

8

printf ("1) Saluda\n"); printf ("2) Desp´ ıdete\n"); scanf ("%d", &opcion); switch (opcion) { case Saludar : printf ("Hola\n"); break; case Despedirse : printf ("Adi´ os\n"); break; default: printf ("Opci´ on no v´ alida\n"); break; } return 0;

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

}

Un error t´ıpico al usar la estructura switch es olvidar el break que hay al final de cada opci´on. Este programa, por ejemplo, presenta un comportamiento curioso: menu2.c 1

E menu2.c E

#include <stdio.h>

2 3

enum { Saludar =1, Despedirse };

4 5 6 7

int main(void) { int opcion;

8

printf ("1) Saluda\n"); printf ("2) Desp´ ıdete\n"); scanf ("%d", &opcion); switch (opcion) { case Saludar : printf ("Hola\n"); case Despedirse: printf ("Adi´ os\n"); default: printf ("Opci´ on no v´ alida\n"); } return 0;

9 10 11 12 13 14 15 16 17 18 19 20 21

}

Si seleccionas la opci´ on 1, no sale un u ´nico mensaje por pantalla, ¡salen tres: Hola, Adi´ os y Opci´ on no v´ alida! Y si seleccionas la opci´on 2, ¡salen dos mensajes: Adi´ os y Opci´ on no v´ alida! Si no hay break, el flujo de control que entra en un case ejecuta las acciones asociadas al siguiente case, y as´ı hasta encontrar un break o salir del switch por la u ´ltima de sus l´ıneas. El compilador de C no se˜ nala la ausencia de break como un error porque, de hecho, no lo es. Hay casos en los que puedes explotar a tu favor este curioso comportamiento del switch: menu3.c 1

menu3.c

#include <stdio.h>

2 3

enum { Saludar =1, Despedirse, Hola, Adios };

4 5 6 7

int main(void) { int opcion;

8 9

printf ("1) Saluda\n");

Introducci´ on a la Programaci´ on con C

53

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement