QU'EST CE QUE SWITCH ???

Krox68 Messages postés 157 Date d'inscription jeudi 17 octobre 2002 Statut Membre Dernière intervention 11 septembre 2004 - 24 févr. 2003 à 12:09
jonathanmcdougall Messages postés 64 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 7 mars 2003 - 24 févr. 2003 à 16:20
j'aimerais qu'on m'explique ce qu'est switch avec u exemple
merci d'avance
Krox68

2 réponses

cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
24 févr. 2003 à 13:24
bonjour,

switch est un mot clef du C et du C++
il permet de manière performante de faire UN test à plusieurs branches
exemple trivial :
soit 'n' un entier
switch (n)
{
case 0:
cout << "n vaut 0"; break;
case 1:
cout << "n vaut 1"; break;
default:
cout << "n différent de 0 et 1"; break;
}
il permet d'éviter des "if ... else " multiples dans le cas ou le test est unique
Attention à ne pas oublier le "break" ... car "fall through" sans erreur de compil
0
jonathanmcdougall Messages postés 64 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 7 mars 2003
24 févr. 2003 à 16:20
> > j'aimerais qu'on m'explique ce qu'est switch avec u exemple
> > merci d'avance
> > Krox68
>

> switch est un mot clef du C et du C++
> il permet de manière performante de faire UN test à plusieurs branches

À ma connaissance, la plupart des implémentations changent le switch pour une série de ifs à la compilation. Il n'y a donc pas de différences de performance.

> exemple trivial :
> soit 'n' un entier
> switch (n)
> {
> case 0:
> cout << "n vaut 0"; break;
> case 1:
> cout << "n vaut 1"; break;
> default:
> cout << "n différent de 0 et 1"; break;
> }
> il permet d'éviter des "if ... else " multiples dans le cas ou le test est unique
> Attention à ne pas oublier le "break" ... car "fall through" sans erreur de compil

À noter que le fall-through peut être intentionnel, comme dans l'exemple classique des voyelles et consonnes :

# include

int main()
{

char c;

std::cin >> c;

switch (c)
{
case 'a': //fall through
case 'e':
case 'i':
case 'o':
case 'u':
case 'y':
std::cout << "Voyelle";
break;

default :
std::cout << "Consonne";
break;
}

Il est préférable de noter lorsqu'un fall-through est intenionnel pour ne pas créer de confusion.
0
Rejoignez-nous