cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 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
jonathanmcdougall
Messages postés64Date d'inscriptiondimanche 9 février 2003StatutMembreDerniè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.