2012-07-17 30 views
8

Bạn sẽ làm điều này trong C++ như thế nào? Ví dụ: tôi đang cố kích hoạt thoát chương trình cả khi người dùng nhấn ESC hoặc 'q' hoặc 'Q'.Thực hiện một HOẶC trong Hộp chuyển đổi trong C++

Tôi đã thử tìm kiếm, nhưng tôi không tìm thấy cú pháp nào trong C++. Tôi biết làm thế nào để làm điều đó với if-else, nhưng là nó có thể với switch - trường hợp? Tất nhiên tôi chỉ có thể thực hiện một chức năng và gọi nó từ hai trường hợp riêng biệt, nhưng có cách nào để làm điều đó chỉ bằng tuyên bố trường hợp kết hợp?

Ví dụ đó là những gì tôi đang tìm kiếm (tất nhiên không làm việc):

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

     case 'a': ... 

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

Bạn có thể đơn giản hóa 'tuyên bố switch' của bạn bằng cách sử dụng 'tolower' hoặc' toupper' đầu tiên. –

Trả lời

35

Các trường hợp lọt qua mà không có một break:

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

Chết tiệt, đánh tôi với nó. – Drise

+0

Darn it Tôi đã hoàn toàn tại "break" khi thông báo câu trả lời mới xuất hiện – Pyrodante

+2

Câu chuyện về cuộc đời tôi. – chris

1

Tôi tin rằng nó chỉ là

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

    ... 

Các trường hợp A và B sẽ thực hiện cùng một mã.

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

Cẩn thận - '027' và' 27' không giống nhau. Hàng đầu '0' trong' 027' là tiền tố cho một số bát phân, vì vậy '027'! =' 27'. – templatetypedef

0

cú pháp trở nên

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

     case 'a': ... 

     case 'b': ... 
     } 
    } 
Các vấn đề liên quan