Por que mudar / caso e não se / senão se?

Esta questão está principalmente voltada para C / C ++, mas eu acho que outras linguagens são relevantes também.

Não consigo entender por que o switch / case ainda está sendo usado em vez de if / else if. Parece-me muito com o uso de goto, e resulta no mesmo tipo de código confuso, enquanto os mesmos resultados poderiam ser alcançados com if / else se de uma maneira muito mais organizada.

Ainda assim, vejo esses bloqueios com bastante frequência. Um lugar comum para encontrá-los é perto de um loop de mensagem (WndProc ...), enquanto estes estão entre os lugares quando eles levantam o maior estrago: variáveis ​​são compartilhadas ao longo de todo o bloco, mesmo quando não são proprias (e não podem ser inicializado dentro dele). Atenção extra deve ser colocada em não deixar de quebrar, e assim por diante ...

Pessoalmente, eu evito usá-los, e me pergunto se estou perdendo alguma coisa?

Eles são mais eficientes do que se fossem? Eles são realizados pela tradição?

questionAnswers(15)

yourAnswerToTheQuestion