2012-07-17 10 views
8

¿Cómo harías esto en C++? Por ejemplo, estoy tratando de desencadenar una salida de programa si el usuario presiona ESC o 'q' o 'Q'.Haz una O en Switch-Case en C++

He intentado buscarlo, pero no encontré sintaxis en C++. Sé cómo hacerlo con if-else, pero ¿es posible con switch-case? Por supuesto, puedo simplemente hacer una función y llamarla desde dos casos separados, pero ¿hay alguna manera de hacerlo solo mediante una declaración combinada de casos?

por ejemplo, que es lo que estoy buscando (por supuesto que no trabaja):

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

     case 'a': ... 

       case 'b': ... 
    } 
} 
+1

puede simplificar su declaración '' switch' utilizando tolower' o 'toupper' primero. –

Respuesta

35

casos caen a través sin interrupción:

case 27: //could be 27 
case 'q': //could be 27 or 'q' 
case 'Q': //could be 27, 'q', or 'Q' 
    exit(0); 
    break; 
+0

Maldita sea, pásame. – Drise

+0

Maldición Estaba completamente en "descanso" cuando apareció la nueva notificación de respuesta – Pyrodante

+2

Historia de mi vida. – chris

1

Creo que es sólo

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

    ... 

Los casos A y B ejecutarán el mismo código.

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

     case 'a': ... 

     case 'b': ... 
    } 
} 
+2

Cuidado: '027' y' 27' no son lo mismo. El '0' inicial en' 027' es el prefijo de un literal octal, entonces '027'! =' 27'. – templatetypedef

0

la sintaxis se convierte en

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

     case 'a': ... 

     case 'b': ... 
     } 
    } 
Cuestiones relacionadas