Odpověď na názor

Odpovídáte na názor k článku Programovací jazyk C3: podmínky, rozvětvení a programové smyčky. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.

  • 30. 9. 2025 13:19

    radekm
    Stříbrný podporovatel

    Or je implicitní, když za case není žádný kód. Viz příklad z článku

    switch (x) {
          case 0:
              io::printfn("%d is zero", x);
          case 1:
          case 3:
          case 5:
          case 7:
          case 9:
              io::printfn("%d is odd number", x);
          case 2:
          case 4:
          case 6:
          case 8:
          case 10:
              io::printfn("%d is even number", x);
          default:
              io::printfn("I don't know what to say about %d", x);
    }

    nextcase řeší situaci, kterou AFAIK Rust vůbec neumí. Standardně skáče na další case, ale může skočit i někam jinam (viz case 1, který skočí na case 0 nahoru):

    fn void duff(int* to, int* from, int count)
    {
        int n = (count + 7) / 8;
        switch (count % 8)
        {
            case 0: *to++ = *from++; nextcase;
            case 7: *to++ = *from++; nextcase;
            case 6: *to++ = *from++; nextcase;
            case 5: *to++ = *from++; nextcase;
            case 4: *to++ = *from++; nextcase;
            case 3: *to++ = *from++; nextcase;
            case 2: *to++ = *from++; nextcase;
            case 1: *to++ = *from++; if (--n > 0) nextcase 0;
        }
    }

    30. 9. 2025, 13:20 editováno autorem komentáře