Die switch Strucktur ist ohne das break zulässig und syntaktisch richtig. Der Compiler erzeugt also dazu code, der auch funktionieren wird. Nur ist das in der Regel nicht das erwartete Ergebnis. Vermutlich wird der Compiler nicht mal eine Warning ausgeben.

Ein Switch Statement ohne die Breaks macht nur sehr selten Sinn. Es könnte aber vorkommen.

Ich persönlich halte das für ein Schwäche der Sprache C, vor allem wenn keine Warnung gibt.

p.s.:
Das Break hinter dem letzten Fall könnte man weglassen, schadet aber auch nichts.