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
¡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!
¡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!
Muchas gracias por vuestra ayuda
Saludos,