2010-05-26 4 views
13

아래 C++ 코드의 switch/case 문에 대한 설명 : "사례 1"은 분명히 false이므로 do/while 루프를 입력하는 이유는 무엇입니까?C++의 Switch/Case 문

#include <iostream> 

using namespace std; 

int main() { 

    int test = 4; 

    switch(test) { 
     case 1: do { 
      case 2: test++; 
      case 3: test++; 
      case 4: cout << "How did I get inside the do-while loop?" << endl; break; 
      case 5: test++; 
     } while(test > 0); 
     cout << test << endl; 
    } 
} 
+0

귀하의 예에서 '사례 7'이 보이지 않습니다. –

+0

약간의 오타가 있습니다. 7을 변경했습니다. -> 1 – user320723

답변

18

이, Duff's Device이다 루프 중간으로 뛰어 들기위한 오래된 기술입니다.

+2

영리합니까? 나는 그것이 사건에 더 의존한다고 생각한다. 그것이 코드의 가독성을 손상 시키면 나는 그것을 사용하지 않을 것이다. 적용 할 수있는 구체적인 예를 들어 줄 수 있습니까? – Phong

+1

@Phong : 사악한 것들은 여전히 ​​영리 할 수 ​​있습니다. –

+0

선생님, 숙제하는 것처럼 보입니다! +1! –

0

나는 그것을 테스트하지했지만, 루프만큼 입력해야 동안 일반적으로 할 일이/당신이 구현 된 "휴식"문이없는 ...

0

스위치는 소스 코드를 평가/이해하지 않습니다. 그냥 여기 명령은 소스 코드 라벨 case 4

0

당신이 도달 할 이유로 직접 이동할 수있는 DO-동안 때문에 루프는 다음과 같습니다

스위치 문은 첫 번째 레이블에서 처리를 시작합니다. break 문을 치지 않으면 각 레이블이 연속적으로 하나씩 (끝나는 경우) 끝나거나 각 레이블을 통과하여 그 안에있는 모든 코드를 실행 한 다음 종료합니다.