Test Foro de elhacker.net SMF 2.1

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.


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:


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:


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


// 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