C ++에 while 루프를 가질 수 있도록 시작 또는 끝이 아닌 루프 중간에 확인을 할 수 있습니까?
-
05-07-2019 - |
문제
나는 while 루프가 다음과 같은 일을하고 싶지만 C ++에서 가능합니까? 그렇다면 구문은 어떻게 이동합니까?
do {
//some code
while( expression to be evaluated );
// some more code
}
나는 while 진술이 표현식이 더 이상 사실이 아니라고 결정하자마자 루프가 종료되기를 원합니다 (즉, 표현식이 false 인 경우 // 일부 코드가 실행되지 않음)
해결책
넌 할 수있어:
while (1) {
//some code
if ( condition) {
break;
}
// some more code
}
다른 팁
약간의 배경과 분석 : 당신이 요구하는 것은 내가 들었습니다.달 루프"Simula 명성의 Ole-Johan Dahl의 이름을 따서 명명되었습니다. Sean E. States와 같이 C ++는 다른 몇 가지 언어 (특히 Ada)를 가지고 있지만 (Ima의 답변을 제외하고) 가지고 있지 않습니다. -"및"while-do "루프는 유용한 구성으로 만듭니다. 더 일반적인 사례는 임의의 수의 테스트를 허용합니다. C ++는 DAHL 루프에 대한 특별한 구문이 없지만 Sean McCauliff와 Arak의 답변은 완전히 동일합니다. 그들에게. "while (true)"루프는 컴파일러에 의해 간단한 점프로 바뀌어야하므로 컴파일 된 버전은 컴파일 된 가상의 Dahl 루프와 완전히 구별 할 수 없습니다. 더 읽을 수있는 경우에도 사용할 수 있습니다. ㅏ
do {
...
} while (true);
글쎄, 나는 당신이 상태를 루프 중간으로 이동해야한다고 생각합니다 (?) :
while (true)
{
...
// Insert at favorite position
if (condition)
break;
...
}
기술적으로 예 :
for ( ;CodeBefore, Condition; ) {CodeAfter}
대답은 아니오입니다. while 명령문이 평가 해야하는 조건이 실제로 루프의 상단 (또는 하단)에서 평가 될 때까지 루프가 자동으로 종료 될 수 없습니다. Loop의 중간에 문을 배치 할 수 없습니다.