Quelqu'un pourrait-il me l'expliquer?
Ils sont assez similaires mais chacun a quelques particularités.
commutateur
switch
est généralement plus compact que beaucoup de if else
imbriqué et donc plus lisiblebreak
entre deux cas de commutation, vous pouvez passer au cas suivant dans de nombreuses langues de type C. Avec if else
, vous auriez besoin d’une goto
(ce qui n’est pas très agréable pour vos lecteurs ... si le langage le supporte goto
du tout).switch
accepte uniquement les types primitifs comme clé et les constantes comme cas. Cela signifie qu’il peut être optimisé par le compilateur en utilisant une table de saut qui est très rapide.On ne sait pas vraiment comment formater switch
correctement. Sémantiquement, les cas sont des cibles de saut (comme les étiquettes pour goto
) qui doivent être vides à gauche. Les choses s'aggravent lorsque vous avez des accolades:
case XXX: {
} break;
Ou les accolades doivent-elles aller dans des lignes qui leur sont propres? Le corset de fermeture doit-il aller derrière la break
? Comment illisible serait-ce? etc.
switch
n'accepte que certains types de données.sinon
if
autorise les expressions complexes dans la condition alors que switch souhaite une constantebreak
entre if
s mais vous pouvez oublier la else
(surtout pendant le cut'n'paste)La principale différence est que switch
dépêches immédiatement à la case
concernée, généralement via un saut indexé, plutôt que de devoir évaluer toutes les conditions qui seraient requises dans une chaîne if-else
, ce qui signifie que le code se trouve à la fin de la chaîne. est atteint plus lentement que le code au début.
Cela impose à son tour certaines restrictions à l'instruction switch
que la chaîne if-else
n'a pas: elle ne peut pas gérer tous les types de données et toutes les valeurs case
doivent être constantes.
Différences entre if-else et switch
Expression à l'intérieur de if if décide s'il faut exécuter les instructions à l'intérieur de block ou under block. D'autre part, l'expression à l'intérieur de l'instruction switch détermine le cas à exécuter.
L'instruction if-esle vérifie l'égalité et l'expression logique. D'autre part, basculez les contrôles uniquement pour l'égalité.
L'instruction if évalue le type entier, caractère, pointeur ou type à virgule flottante ou type booléen. Par ailleurs, l'instruction switch n'évalue qu'un caractère ou un type de données entier.
La séquence d’exécution ressemble à l’une des instructions sous block si celle-ci est exécutée ou les instructions sous l’autre instruction block s’exécute. D'autre part, l'expression dans l'instruction switch détermine le cas à exécuter et si vous n'appliquez pas d'instruction break après chaque cas, elle sera exécutée jusqu'à la fin de l'instruction switch.
Si expression à l'intérieur si le résultat est faux, l'instruction à l'intérieur d'un autre bloc sera exécutée. Si l'expression à l'intérieur de l'instruction switch s'avère être fausse, les instructions par défaut sont exécutées.
Il est difficile d’éditer les instructions if-else car il est fastidieux de savoir où la correction est nécessaire. D'autre part, il est facile d'éditer les instructions switch car elles sont faciles à tracer.
dans un mot, nous pouvons dire switch agit un peu plus vite que si autre déclaration !!!
SI autre - IT est utilisé pour prendre une décision
Instruction Switch - Elle est utilisée pour tester la valeur de la variable donnée par rapport à une liste de valeurs de cas.
La différence entre les instructions Switch et if-else est la suivante:
Voici la syntaxe générale de if-else ladder:
if (condition1) { //Body of if }
else if (condition2) { //Body of if }
else if (condition3) { //Body of if }
else { //default if all conditions return false }
Et voici la syntaxe générale pour switch:
switch ( variable )
{
case <variable value1>: //Do Something
break;
case <variable value2>://Do Something
break;
default: //Do Something
break;
}
L'échelle if-else est de type vérification de condition stricte, While est de type saut valeur.
Avantages de basculer sur l'échelle if-else: