Switch en c++

doudou -  
 doudou -
Bonjour,
j'ai utilisé la fct switch sachant que j'ai trois cas, est ce que je suis obligée de rajouter :
default:... apres les trois cas sachant que j'ai pas quoi mettre dans ce cas là!!
c une question qui est bete mais je suis debutante
merci bcp
A voir également:

2 réponses

_vince Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
Tu n'est pas oblige de mettre "default" mais c'est vivement conseille.

Pourquoi ? Si le programme execute le default alors qu'il n'est pas cense, ca veut dire qu'il y a un probleme de logique et que la condition que tu testes prend une valeur inatendue.

Quoi mettre ? A toi de gerer cette valeur inattendue. Tu peux faire que la fonction retourne un code d'erreur, ou mettre un assert(false). A toi de voir ce qui convient a ton programme. Le minimum est d'au moins mettre un commentaire dans le code disant que le programme ne doit pas atteindre le cas par "default". Si c'est vraiment ca que tu veux.
0
doudou
 
ok, et si je mets la condition dans le if qui pressede le switch comme ca je suis sur qu'il va pas prendre autres valeurs:

if ((F1!=F2)&& (abs(F1-F2)/200)>=3)
{int K;
switch ((abs(F1-F2)/200))
{
case 1:
K=18;
break;
case 2:
K=50;
break;
case 3:
K=58;
break;
}
tu penses qua ca va marcher?
0
Mahmah Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   125
 
Bonjour,

Juste un petit mot en passant.

Le if est vrai si abs(F1-F2) / 200 est supérieur ou égal à 3 donc le switch se trouvant dans le if ne se servira jamais des cas 1 et 2. Juste une petite inversion je pense.

Personnellement je mettrais au moins un commentaire. Eventuellement un assert( 0 ) comme dit plus haut.

Méfiance avec la division entière:
199 / 200 = 0
200 / 200 = 1
399 / 200 = 1
400 / 200 = 2
etc.

M.
0
doudou
 
ok je vais essayer assert( 0 ) merci bcp pour votre aide precieuse
0