switch 문에서 continue 사용
switch문 중간 에서 다음 코드의 루프 문 으로 건너 뛰고 싶습니다 .
while (something = get_something())
{
switch (something)
{
case A:
case B:
break;
default:
// get another something and try again
continue;
}
// do something for a handled something
do_something();
}
이것이 유효한 사용 방법 continue입니까? continue진술 은 진술에서 무시 switch됩니까? 여기서 C와 C ++의 동작이 다른가요?
괜찮습니다. continue문은 둘러싸는 루프와 관련이 있으며 코드는 다음과 같아야합니다 (이러한 점프 문을 피함).
while (something = get_something()) {
if (something == A || something == B)
do_something();
}
그러나 break귀하의 의견이 제안한 것처럼 루프를 종료하려면 (거짓으로 평가 될 때까지 항상 다른 무언가로 다시 시도합니다) 다른 구조가 필요합니다.
예를 들면 :
do {
something = get_something();
} while (!(something == A || something == B));
do_something();
예, 괜찮습니다 if. 성명서 에서 사용하는 것과 같습니다 . 물론 a break를 사용 하여 스위치 내부에서 루프를 벗어날 수는 없습니다 .
예, 계속은 switch 문에 의해 무시되고 테스트 할 루프의 조건으로 이동합니다. Ritchie의 C 프로그래밍 언어 참조에서 발췌 한 내용을 공유하고 싶습니다.
이
continue문은와 관련이break있지만 덜 자주 사용됩니다. 이는 둘러싸for는while, 또는do루프 의 다음 반복이 시작되도록합니다. 으로while하고do,이 수단은 테스트 부분은 즉시 실행된다; 에서for제어는 증분 단계로 전달됩니다.continue 문은 문이 아닌 루프에만 적용됩니다
switch.continue내부 a를switch루프 내부는 다음 루프 반복됩니다.
C ++에 대해서는 잘 모르겠습니다.
구문 론적으로 정확하고 문체 적으로 괜찮습니다.
좋은 스타일은 모든 case:문장이 다음 중 하나로 끝나야합니다.
break;
continue;
return (x);
exit (x);
throw (x);
//fallthrough
또한 case (x):즉시
case (y):
default:
허용됨-정확히 동일한 효과를 가진 여러 케이스를 번들로 묶습니다.
다른 건처럼, 실수로 의심되는 if(a=4){...}물론 당신이 루프 (둘러싸 필요 while, for, do...while에 대한) continue작업이다. case()혼자로 돌아 가지 않습니다 . 그러나 다음과 같은 구조입니다.
while(record = getNewRecord())
{
switch(record.type)
{
case RECORD_TYPE_...;
...
break;
default: //unknown type
continue; //skip processing this record altogether.
}
//...more processing...
}
...괜찮아.
기술적으로는 유효하지만 이러한 모든 점프는 제어 흐름, 특히 continue문장을 모호하게 만듭니다.
나는 그러한 트릭을 첫 번째가 아닌 최후의 수단으로 사용할 것입니다.
어때
while (something = get_something())
{
switch (something)
{
case A:
case B:
do_something();
}
}
더 짧고 더 명확한 방식으로 작업을 수행합니다.
Switch는 루프로 간주되지 않으므로 switch의 case 문 내에서 Continue를 사용할 수 없습니다 .
참고URL : https://stackoverflow.com/questions/2146763/using-continue-in-a-switch-statement
'program story' 카테고리의 다른 글
| 인터페이스 방향을 회전하는 동안 UICollectionView에서 contentOffset 유지 (0) | 2020.11.02 |
|---|---|
| 캡처 그룹으로 Java Regex 바꾸기 (0) | 2020.11.02 |
| D3 힘 방향 그래프에서 선택한 노드, 링크 및 하위 항목을 강조 표시합니다. (0) | 2020.11.02 |
| Atom에서 Python 실행 (0) | 2020.11.02 |
| Eclipse 3.7 (Indigo) + Tomcat7 — 선택한 유형을 사용하여 서버를 만들 수 없습니다. (0) | 2020.11.01 |