Ayuda por favor con un switch con 3 cases

Iniciado por suso teruel, 10 Julio 2012, 11:34 AM

0 Miembros y 1 Visitante están viendo este tema.

suso teruel


Buenos días,
Por favor a ver si me podeis ayudar con este código. Sobre todo cómo funcionan estos casos. La salida la conozco porque la he compilado, el problema como os comento es que no sé cómo van los casos.

main(){
   int i, x= 0, y=1;
   for(i=0; i<3; i++) {
      switch(i) {
         case 0: x=++y;
         break;
         case 1:
         case 2: x=y++;
         break;
         default: x+=3;
   }
   printf("%d,%d, \n", x, y);
   system("pause");   
   }
}

Gracias

DickGumshoe

¡Hola!

Cuando pones x=++y, significa que primero incrementas en 1 a y, y después le asignas ese valor a x.

Cuando pones x = y++, significa que primero le asignas el valor a x, y después incrementa y en 1.

Al default nunca va a llegar en ese bucle, pero x+=3 es equivalente a x = x + 3.

El case 1 no tiene nada, por lo que nunca llegará a hacer nada.

Por ejemplo:

int x = 2, y = 2;

x = y++; // ahora x=2, y=3
x = ++y; //ahora x=4, y=4
x += 3; //ahora x=7

Saludos!

do-while

#2
¡Buenas!

Cita de: DickGumshoe en 10 Julio 2012, 13:19 PM
El case 1 no tiene nada, por lo que nunca llegará a hacer nada.

Eso no es correcto. Cuando una etiqueta dento de un switch no termina con break, las siguientes sentencias se siguen ejecutando hasta llegar a un break o al final del switch:


switch(numero)
{
   case 2:
   case 3:
   case 5:
   case 7:
       printf("%d es un primo entre 1 y 10\n", numero);
       break;

   case 1:
   case 4:
   case 6:
   case 8:
       printf("%d esta entre 1 y 10, pero no es primo\n", numero);
       break;

   default:
       printf("No quiero pensar nada sobre las propiedades de %d\n");
}


Si lo meteis en un for de 1 a 10 (o el intervalo que querais), vereis como funciona el codigo.

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

suso teruel

Muchas gracias por vuestra ayuda
Saludos,