C ++에 while 루프를 가질 수 있도록 시작 또는 끝이 아닌 루프 중간에 확인을 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1807110

문제

나는 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의 중간에 문을 배치 할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top