2012-08-16 3 views
3

switch 문이 있고 값이 하나의 값일 때 또는 일 때 특정 코드를 실행하려면 다른 방법을 사용하십시오. 다음 코드는 항상 기본 경우로 이동합니다.스위치 통계의 논리 또는 케이스 부분은 무엇입니까?

#include <iostream> 
using namespace std; 

int main() 
{ 
    int x = 5; 
    switch(x) 
    { 
     case 5 || 2: 
      cout << "here I am" << endl; 
      break; 
     default: 
      cout << "no go" << endl; 
    } 

    return 0; 
} 

답변

8

"을 통해 떨어지는"로 알려진

switch (x) 
{ 
case 5: 
case 2: 
    cout << "here I am" << endl; 
    break; 
} 

.

default 사례가 게시 된 코드에서 실행되는 이유는 5 || 2의 결과가 1 (true)이라는 것입니다. 표시된 코드에 x1으로 설정하면 5 || 2 사례가 실행됩니다 (http://ideone.com/zOI8Z 참조).

스위치/케이스와 C 사이에 자신의 약간의 차이/C++ 및 당신이 알고하는 것 같아서 :) 라벨 (ABCD에 대한 몇 가지 다른 정보에 대한
+0

왜 5 || 2는 2로 평가됩니까? 그건 논리적이지 않거나 ... – Celeritas

+0

@Celeritas, 나는 '2'로 평가한다고 말한 적이 없으며 논리 OR입니다. – hmjd

+0

죄송합니다. 2는 1로 평가됩니다. 그러나 바이너리 101 OR 11 = 111은 7이 아니라 1입니다. 맞습니까? – Celeritas

3

보자는 switch가을-통해 :

switch(x) 
{ 
    case 2: 
    case 5: 
     cout << "here I am" << endl; 
     break; 
    default: 
     cout << "no go" << endl; 
} 
7

그것을 통해 가을 확인 :

int main() 
{ 
    int x = 5; 
    switch(x) 
    { 
     case 5: 
     // there's no break statement here, 
     // so we fall through to 2 
     case 2: 
      cout << "here I am" << endl; 
      break; 
     default: 
      cout << "no go" << endl; 
    } 

    return 0; 
} 

5 || 2를, 그런데 그것으로, 1 (또는 true로 평가 논리 표현식입니다.) 시도해 볼 수 있습니다. 이처럼

1
case2: 
case5: 
    //do things 
    break;