Caso de interruptor estranho escopo
Revendo alguns códigos C de terceiros, eu me deparei com algo como:
switch (state) {
case 0:
if (c=='A') { // open brace
// code...
break; // brace not closed!
case 1:
// code...
break;
} // close brace!
case 2:
// code...
break;
}
Que no código que eu estava revendo parecia ser apenas um erro de digitação, mas fiquei surpreso que ele compilado com erro.
Por que isso é válido C?
Qual é o efeito na execução deste código comparado ao fechamento da chave no local esperado?
Existe algum caso em que isso possa ser útil?
Edit: No exemplo eu olhei para todos os intervalos estavam presentes (como acima) - mas a resposta também pode incluir o comportamento se quebrar ausente no caso 0 ou 1.