QU'EST CE QUE SWITCH ???

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

2 réponses

Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
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
Messages postés
64
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
7 mars 2003

> > 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.