Co wypisze program przez instrukcję switch ? Dziwne działanie.

0

Mam napisać co wypisze program, ale jego działanie jest dziwne bo wyświetla takie litery których nie ma ani w switchu ani w tekście:

int main()
{
    char c1,c2;
    char tekst[] = "kolorowo";
    for(c1=*(tekst-1+strlen(tekst)), c2=*tekst; c1-->=c2;)
    {
        switch(c1)
        {
            case 'o' : printf("^ "); c2++;
            case 'l' : printf("* "); break;
            case 'k' : printf("& "); c2++; break;
            case 'm' : printf("% ");
            case 'r' : printf("# "); break;
            default : printf("%c %c ",c1,c2); c2++;
        }
    }
} 
0

A może warto było napisać co wypisuje? Pewnie się zastanawiasz skąd bierze się n w wyniku? Ano dlatego, że w warunku działania pętli masz c1-- i przy pierwszym przejściu gdy c1 ma wartość o zostaje zmniejszona o 1 i w switchu jest już n. Dzieje się tak, bo warunek pętli jest sprawdzany przed jej wykonaniem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1