Pregunta sobre el switch
#1

Hola a todos
Estoy realizando un sistema de trabajos, pero me ha surgido una duda al usar switch, un ejemplo serнa hacer esto:

pawn Код:
main()
{
    new variable = 5;
    switch(variable)
    {
        case 5:
        {
            printf("Hey");
            variable = 6;
        }
        case 6:
        {
            printf("Si aparece esto ... F.O.");
        }
    }
}
їMe imprimirнa 2 mensajes en la consola?
Es que aun tengo dudas como funciona switch, una vez me paso que puse algo asн:
case 0..50000 y el compilador se tardу una eternidad, lo que parece que estaba haciendo era traducir el cуdigo ese a case 0, 1, 2, 3, 4 ... 50000 y lo tuve que pasar a if(var > 0 && var <=50000)
Gracias si alguien me pueda aclarar mi duda
Reply
#2

Sн, tu ejemplo te imprimirнa 2 mensajes porque cuando el sistema alcanza "case 6", el variable estarб 6.

Se puede utilizar un variable temporal (como en el siguiente ejemplo).

pawn Код:
new variable = 5;
new temp = -1;
switch(variable)
{
    case 5:
    {
        printf("Hey");
        temp = 6;
    }
    case 6:
    {
        printf("Si aparece esto ... F.O.");
    }
}

if (temp != -1)
    variable = temp;
Reply
#3

"Switch" solo harб una vez lo quй coloques. ejemplo:

pawn Код:
new variable = 50:
switch(variable)
{
    case 0: // si tu variable estб en 0 harб lo quй coloquйs dentro del case 0(solo lo hace una vez).
    {
        SendClientMessage(playerid, -1, "Tu variable estб en: 0");

    }
    case 1..50: // si tu varuable esta en 1-50 harб lo quй coloquйs entre este rango(solo una vez).
    {
        forma(string, sizeof(string), "Tu variable estб en: %d", variable);
        SendClientMessage(playerid, -1, string);
    }
}

Pero tъ ahн le diste un valor a tu variable al llegar al 'case 5' y entonces el switch irб a ese valor la siguiente vez, algo asн:

pawn Код:
new variable = 3;
switch(variable) // al valor de la variable
{
    case 0:  // solo hace una vez las funciones por case.
    {
        SendClientMessage(playerid, -1, "variable llego a 0 y ahora su valor es '5'/case 5 la prox.");
        variable = 3; // esto da un valor especifico a tu variable, la siguiente vez ira al case 3 porque es el valor de la variable
    }
    case 1:
    {
        SendClientMessage(playerid, -1, "variable llego a 1 y se restara uno y su valor ahora es 0.");
        variable--; // esto resta a 1 de valor a tu variable.
    }
    case 2:
    {
        SendClientMessage(playerid, -1, "variable llego a 2 y se restara uno y su valor ahora es 1.");
        variable--; // esto resta a 1 de valor a tu variable.
    }
    case 3:
    {
        SendClientMessage(playerid, -1, "el valor actual de tu variable es 3 y restara uno, ahora su valor es 2.");
        variable--; // esto resta a 1 de valor a tu variable.
    }
}
Reply


Forum Jump:


Users browsing this thread: