1 Naposledy upravil: absolonj (2022-09-29 17:51:33)

Téma: [vyřešeno] Vnitřní switch

Mám problémy s vnořeným switchem (v bloku case). Zdá se, že v případě, že se hodnoty vnějšího a vnitřního switche shodují (stejný case ve vnějším i vnitřním switchi), jsou zpracovány příkazy obou case pro vnější smyčku. Uvedu to na příkladu, ať je to pochopitelné:

        void main(void)
        {
            int status = 0;
            int cmd = 1;
            switch (status)
            {
               case 0:
                    printf ("Status 0n");
                    break;

               case 100:
                    printf ("Status 100n");
                    switch (cmd)
                    {
                       case 0:
                            printf("cmd 0n");
                            break;

                       default:
                            printf("default cmdn");
                            break;
                    }
                    break;

               case 101:
                    printf("status 101n");
                    break;

               case 102:
                    printf("status 102n");
                    break;

               default:
                    printf("default statusn");
                    break;
            }
        }

Na ladicím výpisu se zobrazí:

Status 0
cmd 0

To je samozřejmě špatně, protože program vleze i do vnitřního case 0. Pro status=300 je výsledek ještě podivnější. Možná by stačilo nějaké uzávorkování, ale přiznám se, že nevím jak.

Mohl bych si také nadefinovat hodnoty tak, aby se ve vnitřní a vnější smyčce nepřekrývaly, ale to bych musel udělat plný výčet, protože na default to taky zlobí.  V nejhorším případě budu muset vnitřní smyčku napsat jako funkci.

2

Re: [vyřešeno] Vnitřní switch

Opraveno v novém FW.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: [vyřešeno] Vnitřní switch

Děkuji za odpověď.

Ttěch case nemám moc, takže jsem to vyřešil if {} else if {} ... else {}.

4

Re: [vyřešeno] Vnitřní switch

A v novém FW už to funguje jak má ?

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

5

Re: [vyřešeno] Vnitřní switch

Nevšiml jsem si dotazu. Vyzkouším a dám vědět.

6

Re: [vyřešeno] Vnitřní switch

Ano funguje, děkuji za rychlou reakci.