@Kaczus,
post #20
Nie, "do" nie jest potrzebne przed switchem. Co wiecej, dodanie takiego "do" (albo przeniesienie juz istniejacego nieco wyzej) spowoduje, ze podany przeze mnie kod przestanie dzialac.
Analiza kodu jest dla odmiany dosc prosta :). Jesli wielkosc bufora jest wyrownana do wielokrotnosci osmiu zmiennych long, to wykona sie cala petla, poczynajac od "case 0:". Jesli zas petla jest nie wyrownana, najpierw zostanie spelniony ktorys z warunkow - case 1..7. Zauwazcie, ze nie ma nigdzie break, wiec case 7: sprowadza sie do przekopiowania 7 slow long, case 6: szesciu i tak dalej. na koncu switcha ilosc pozostalych do przekopiowania danych bedzie juz ladnie wyrownana do wielokrotnosci osmiu slow long. Zostanie sprawdzony warunek while(--n>0) i w razie potrzeby petla wykona sie od poczatku, czyli od "do"
http://en.wikipedia.org/wiki/Duff's_device
Tak, ten kod to przyklad dobrze pokazujacy to, ze instrukcja switch to zlo