8
votes

Faire un ou en cas de commutation en C ++

Comment feriez-vous cela en C ++? Par exemple, j'essaie de déclencher une sortie de programme si l'utilisateur appuie sur Echap ou 'Q' ou 'Q' ou 'Q'.

J'ai essayé de la chercher, mais je n'ai trouvé aucune syntaxe à C ++. Je sais comment le faire avec si, sinon, mais est-il possible d'un cas de commutation? Bien sûr, je peux simplement faire une fonction et l'appeler à partir de deux cas séparés, mais existe-t-il un moyen de le faire juste par une déclaration combinée de cas? P>

Par exemple, c'est ce que je cherche (bien sûr pas Travailler): P>

void keyboard( unsigned char key, int x, int y )
{
    switch( key )
    {
        case ( 27 || 'q' || 'Q' ):
            exit( 0 );
            break;

        case 'a': ...

                case 'b': ...
    }
}


1 commentaires

Vous pouvez simplifier votre instruction à l'aide de tolower ou TOUPPER .


4 Réponses :


35
votes

Les cas tombent sans pause: xxx


5 commentaires

Darn c'est totalement à "pause" lorsque la nouvelle notification de réponse est arrivée


Et TOUJOURS Mettez des commentaires disant que la franchise est délibérée et pourquoi.


@MOOINGDUCK, bon point. Pour d'autres personnes, il pourrait ressembler à vous laisser accidentellement une déclaration de pause, et si vous ne l'avez pas pu, cela pourrait se révéler moins que-joli.


@MOOINGDUCK CLANG a [[CLANG :: FALLTHROUGH]] < / a>, qui pourrait être intéressant aussi.


@MOOINGDUCK Alternativement, cela pourrait introduire des commentaires excessifs. Je ne le commenterais pas personnellement. Si quelqu'un ne comprend pas pourquoi il est là, il ne comprendrait probablement pas le logiciel développé et ne devrait pas toucher le code de toute façon.



1
votes

Je crois que c'est juste

switch(key){
 case 'a': case 'b':  
    /*code*/ 
    break;

    ...


0 commentaires

0
votes
void keyboard( unsigned char key, int x, int y )
{
    switch( key )
    {
        case 027:
        case 'q':
        case 'Q':
            exit( 0 );
            break;

        case 'a': ...

        case 'b': ...
    }
}

1 commentaires

Attention - 027 et 27 n'est pas identique. Le premier 0 in 027 est le préfixe pour un littéral octal, donc 027 ! = 27 .



0
votes

La syntaxe devient xxx


0 commentaires