Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: josco en 14 Octubre 2011, 03:17 am



Título: alguien que explique. (sobre switch case)
Publicado por: josco en 14 Octubre 2011, 03:17 am
mi duda es: no puedo comprender porque el switch case necesita un breake para parar ej.

Código:
int caso=1;
switch(caso)
{
 case 1:
       imrime("caso 1")
 case 2:
       imrime("caso 2")
 case 3:
       imrime("caso 3")
}

este codigo imprime los tres casos, pero no comprendo porque si se supone que solo quiero que entre el caso 1 ya que caso vale 1, mi pregunta es porque se tiene que pasar a todos los casos?

lo pregunto porque en ocasiones quiero pasar de un case a un determinado case por ejemplo asi:

Código:
int caso=1;
int variable;
switch(caso)
{
 case 1:
       if(variable == 1)
        caso = 2;
       if(variable == 2){
         caso = 3;
       }
 case 2:
       imrime("caso 2");
 case 3:
       imrime("caso 3")
}
el codigo anterior impireme caso 2 y caso 3

si le puiera break:

Código:
int caso=1;
int variable = 1 o 2; //esta variable la puede cambiar el usuario o el mismo programa en un proceso y deve ser 1 o 2
switch(caso)
{
 case 1:
       if(variable == 1){
        caso = 2;
        break;
       }
       if(variable == 2){
         caso = 3;
        break;
       }
 case 2:
       imrime("caso 2");
 case 3:
       imrime("caso 3")
}

el codigo anterior no haria nada ponindo la variable en 1 o en 2.

 :huh: :huh: :huh: :huh: :huh: :huh:


Título: Re: alguien que explique. (sobre switch case)
Publicado por: $Edu$ en 14 Octubre 2011, 03:32 am
Estas entreverando todo lo que pasa, si dentro de un case vas a verificar que valor tiene una variable entonces simplemente verifica el valor de la variable y listo.

Y el switch creo que funciona tomando el valor de origen, es decir no podes cambiarlo luego como haces vs, pero creo que podias "goto case 2:" o simplemente llamarlo con "case 2" prueba


Título: Re: alguien que explique. (sobre switch case)
Publicado por: raul338 en 14 Octubre 2011, 04:40 am
por estas razones

Código:
// preguntas algo con 3 opciones de respuesta
switch(respuesta) {
    case A:
    case B:
          imprime("Mal");
          break;
    case C:
          imprime("Bien");
          break;
}

Son sutilezas del lenguaje, en Visual Basic (y creo que en Python) no pasa eso  ;D