Exemple 1 :
unsigned short int my_score; std::cout << "what score you expect you got at the exam"; cin >> my_score; switch(my_score) { case 90: std::cout<<"awesome keep the good work"; break; case 80 : std::cout<<"study harder next time"; break ; case 20: std::cout << "quit school"; break; } if(my_score==90) std::cout<<"awesome keep the good work"; else if (my_score==80) std::cout<<"study harder next time"; else if (my_score==20) std::cout << "quit school";
Exemple 2:
unsigned short int any_number ; any_number = ((15>0)? 10 : 5);//using here the conditional operator if(15>0)//using if & else any_number=10; else any_number=5;
à part ses coûts moins de lignes en utilisant swith et les opérateurs conditionnels je ne les trouve pas utiles du tout j'aime plus le (sinon) plus il nous donne plus d'espace peut-on me dire la différence s'il y en a un?
4 Réponses :
le boîtier de commutation est plus rapide! pour ce point, vous pouvez utiliser ces deux structures pour écrire deux codes fonctionnellement équivalents, puis comparer le code d'assemblage compilé. détails, vous pouvez vous référer à ceci: Analyse de l'efficacité du commutateur et si autre
mais en utilisant si l'instruction est la même chose est-ce? autre que c'est plus rapide
la raison principale est la lisibilité
une longue séquence de if elses est parfois plus difficile à lire et à maintenir qu'une instruction switch.
BTW, la différence de performances disparaîtra sûrement dans le code de production créé par un compilateur moderne.
La construction?: Vous permet de faire des choses non exprimables en ifs
cout << (j>42?"a":"b")
par exemple
Il y a de nombreuses raisons pour lesquelles nous avons besoin d'une instruction switch, c'est plus rapide et plus propre (à mon avis), mais il y a une autre raison: si vous basculez sur une variable enum, et si vous avez oublié de gérer certaines valeurs d'énumération, le compilateur peut l'attraper pour toi.
Avertissement c ++: valeur d'énumération non gérée dans le commutateur [-Wswitch]
Votre principale préoccupation est la lisibilité du code et son potentiel d'erreur. Par exemple, lorsqu'il n'est pas utilisé avec switch
, case
et break
s (!), Il est probablement plus sûr de choisir if
- else
.
En C ++, est-il préférable d'utiliser des instructions switch et case ou d'utiliser des instructions if? Personnellement, je trouve les réponses aussi bonnes que simples.
Pour switch et elseif, vous pouvez obtenir la réponse de Comment le switch compile-t-il dans Visual C ++ et à quel point est-il optimisé et rapide? ou «switch» est-il plus rapide que «if»?
Cela ne répond pas à la question, mais vous n'avez pas besoin de ces parenthèses dans l'instruction conditionnelle.
any_number = 15>0 ? 10 : 5;
fait exactement la même chose.