Tohle je argument typu "to ví přece každý" nebo "říkali to v televizi".
Nepochopil. V tom přirovnání vůbec nejde o tom, jestli to je nebo není dobře. V tom přirovnání jde o to, že se ví, že se jezdí vpravo a tak se tomu to auto přizpůsobí.
Ale u switch konstruktu se ví (statistika), že nejpoužívanější je rozskok se separátníma blokama (za každym break), ale ten konstrukt k tomu přizpůsoben není.
Pokud konstruktéři auta předpokládají, že nejlépe se řídí s volantem vlevo a není tomu tak, je to jejich chyba, ústupek přání zákazníka či obecným zvyklostem (by se to nepletlo). Pokud návrháři jazyka navrhnou switch tak, jak je v C, tak se nepoužívá dobře. To lze objektivně změřit (délka nejčastěji používaných kódů, frekvence chyb). Např. u JAVY byl návrh ústupkem obecným zvyklostem (píše se to takhle). U C (respektive B) nebyly ale ani obecné zvyklosti ani přání zákazníka, zbývá tedy chyba...
Break znamená "vypadni ven" z příkazu.... Proč nefunguje break i u jednotlivých větví if?
Právě proto, že break NEZNAMENÁ vypadni ven z příkazu, ale z cyklu. A právě proto by šlo krásně sémanticky rozšířit i na switch.
Goto l1 není delší než continue 
l1:
...
Goto l1
delší je. A jestli chceš svůj názor obhajovat prasečinama jako dvoupísmenej název identifikátoru...
Jenže pro kompilátor to je jiný tvar toho příkazu...
Tvrdil jsem snad, že je to syntaktická chyba? Ne.
Dělá to to, co bylo zamýšleno? Ne? Tedy je to chyba.
To, že to není syntaktická ale sémantická chyba je o to hroší -
člověk na ní něpřijde při překladu, ale později.
Ne kdo, ale co, ta dvojtečka přeci. Ta ti říká že je to label a nic víc.
Takže výraz (1+1) je volání funkce? Jsou tam závorkly a ty přeci znamenají volání funkce.
Jazyk B...
Znova. To, že to je v B nebo v assembleru tak neznamená, že to v těch jazycích bylo dobře. Takže to není argument. Vždycky se jezdilo na koních a taky to není nejlepší způsob překonávání vzdáleností.
Ad Java - tendle jazyk dědí C++ syntaxi. Pravda odstraňuje některé nebezpečné věci, ale to je rozdíl oproti tomu "přehodit" význam. V době vývoje C to problém nebyl, protože B nemělo v podstatě uživatelskou základnu a jazyk C jazyk B nahrazoval. Teď už to samozřejmě člověk těžko změní, jen by se mu to pletlo. Ale to neznamená, že nemůže konstatovat, že to je špatně.
Btw. ve všech jazycích, co znám a co nemají C-like syntaxi se case používá bez pokračování dalšími větvemi.
případně vyskočení z více cyklů najednou, což je podle mě také dost minoritní potřeba. Osobně jsem ho v C ještě nepoužil!
A koliks toho v C napsal? Např. právě u switch příkazu uvnitř cyklu je to vcelku častá potřeba jako jedna z možností ukončit cyklus...
Prostě se hádáme zbytečně, máme dva opačné náhledy na jednu věc, já si myslím že ten můj je bližší tvůrcům těch jazyků....
Já Ti Tvůj náhled neberu. Já jen tvrdím, že z objektivních hledisek (jako je např. délka kódu u často používaných konstrukcí, odolnost vůči programátorským chybám) není návrh konstrukce switch v jazyce C dobrý. S mým, tvým či K&R pohledem na věc nemá mé tvrzení žádnou souvislost, jak délka kódu, tak frekvence chyb daného typu je veličina objektivně měřitelná :-)