Switch en c++

Fermé
doudou - 16 avril 2008 à 13:36
 doudou - 16 avril 2008 à 15:35
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 mardi 30 janvier 2007 Statut Membre Dernière intervention 14 mai 2008
16 avril 2008 à 13:51
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
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 lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
16 avril 2008 à 14:53
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
ok je vais essayer assert( 0 ) merci bcp pour votre aide precieuse
0