2012-07-17 1 views
8

C++에서 어떻게합니까? 예를 들어 사용자가 ESC 또는 'q'또는 'Q'를 누르면 프로그램 종료를 트리거하려고합니다.C++의 스위치 케이스에서 OR 수행

나는 그것을 찾으려고 노력했지만 C++에서는 구문을 찾지 못했습니다. 나는 if-else로 어떻게 할 수 있는지 알고 있지만 switch-case로 가능합니까? 물론 함수를 만들어 두 개의 별도 케이스에서 호출 할 수는 있지만 결합 된 case 문을 사용하여 수행하는 방법이 있습니까?

내가 (물론 작동하지 않는)을 찾고 있어요 무엇 예를 들어

:

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

     case 'a': ... 

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

가 먼저'toupper''사용 tolower' 또는하여'switch' 문을 단순화된다. –

답변

35

케이스가 쉬지 않고 통해 가을 :

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

젠장, 저를 때려. – Drise

+0

새로운 답변 알림이 올 때 전 "틈새"에있었습니다. – Pyrodante

+2

내 인생의 이야기. – chris

1

나는 그냥

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

    ... 
믿습니다

사례 A와 B는 모두 동일한 코드를 실행합니다.

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

주의 - '027'과'27'은 동일하지 않습니다. '027'의 앞에 오는'0'은 8 진수의 접두사입니다, 그래서'027'! ='27'입니다. – templatetypedef

0

구문은

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

     case 'a': ... 

     case 'b': ... 
     } 
    }