C'est une légère simplification typiquement moderne compilateur rencontre un if..else if ..
séquence qui pourrait trivialement être converti en une instruction switch par une personne, le compilateur. Mais juste pour ajouter plus de plaisir que le compilateur n'est pas restreint par la syntaxe peut donc générer des "switch" comme des déclarations à l'interne qui ont un mélange de plages, des cibles uniques, etc-et ils peuvent (et vont) faire cela pour les deux switch et if..else.
Anyhoo, une extension à Konrad réponse est que le compilateur peut générer un saut de la table, mais ce n'est pas nécessairement garanti (ni souhaitable). Pour une variété de raisons de sauter tables de faire de mauvaises choses à la direction des prédicteurs sur les processeurs modernes, et les tableaux se faire de mauvaises choses pour le cache de comportement, par exemple.
switch(a) { case 0: ...; break; case 1: ...; break; }
Si un compilateur effectivement généré un saut de la table, pour cela, il serait probablement plus lent que la solution de rechange if..else if..
code de style en raison de la sauter table de vaincre direction de la prévision.