web-dev-qa-db-fra.com

Quelle est la différence entre IF-ELSE et SWITCH?

Quelqu'un pourrait-il me l'expliquer?

27
ahmed

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 lisible
  • Si vous omettez la variable break 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).
  • Dans la plupart des langues, 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.

  • Dans de nombreuses langues, switch n'accepte que certains types de données.

sinon

  • if autorise les expressions complexes dans la condition alors que switch souhaite une constante
  • Vous ne pouvez pas oublier accidentellement la break entre ifs mais vous pouvez oublier la else (surtout pendant le cut'n'paste)
  • il accepte tous les types de données.
34
Aaron Digulla

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.

2
user207421

Différences entre if-else et switch

  1. 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.

  2. L'instruction if-esle vérifie l'égalité et l'expression logique. D'autre part, basculez les contrôles uniquement pour l'égalité.

  3. 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.

  4. 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.

  5. 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.

  6. 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 !!!

2
MD RAHIM

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.

1
Kv mathew

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:

  • Une instruction switch fonctionne beaucoup plus vite qu'un équivalent if-else. C'est parce que le compilateur génère une table de sauts pour un commutateur lors de la compilation. Par conséquent, lors de l'exécution, au lieu de vérifier quel cas est satisfait, il ne décide que quel cas doit être exécuté.
  • Il est plus lisible et comparable aux déclarations if-else.
0
Rizwan Shaikh