-2
votes

Instruction Switch et opérateurs conditionnels C ++

Mon Q est pourquoi utiliser l'instruction switch et l'opérateur conditionnel lorsque nous avons le (if else && else if)

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?


c++

2 commentaires

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.


4 Réponses :


0
votes

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


1 commentaires

mais en utilisant si l'instruction est la même chose est-ce? autre que c'est plus rapide



1
votes

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


0 commentaires

2
votes

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]


0 commentaires

0
votes

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.


0 commentaires