Est-il possible d'avoir une boucle while en c ++ qui effectue la vérification au milieu de la boucle au lieu du début ou de la fin?

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

Question

Je souhaite qu'une boucle while fasse la même chose, mais est-ce possible en c ++? Si oui, comment se passe la syntaxe?


do {
    //some code
    while( expression to be evaluated );
    // some more code
}

Je voudrais que la boucle soit sortie dès que l'instruction while décide que l'expression n'est plus vraie (c'est-à-dire si expression est fausse, // du code supplémentaire n'est pas exécuté)

Était-ce utile?

La solution

Vous pouvez faire:

while (1) {
   //some code
   if ( condition) {
       break;
   }
   // some more code
}

Autres conseils

Un peu de contexte et d’analyse: ce que vous demandez, j’ai entendu parler d’un " Dahl loop " ;, du nom d'Ole-Johan Dahl, de la renommée de Simula. Comme le dit Sean E., C ++ ne les a pas (à part la réponse de ima), à la différence de quelques autres langages (notamment Ada). Cela peut prendre la place de & do; while-do " et "pendant que vous faites" boucles, ce qui en fait une construction utile. Le cas plus général permet un nombre arbitraire de tests. Alors que C ++ n'a pas de syntaxe spéciale pour les boucles Dahl, les réponses de Sean McCauliff et d'AraK leur sont totalement équivalentes. Le " while (true) " boucle devrait être transformée en un saut simple par le compilateur, de sorte que la version compilée est complètement impossible à distinguer de la version compilée d’une hypothétique boucle Dahl. Si vous le trouvez plus lisible, vous pouvez aussi utiliser un

do {
    ...
} while (true);

Eh bien, je pense que vous devriez déplacer la condition au milieu de la boucle (?):

while (true)
{
  ...
  // Insert at favorite position
  if (condition)
    break;
  ...
}

Techniquement, oui:

 for ( ;CodeBefore, Condition; ) {CodeAfter}

La réponse est non, votre boucle ne peut pas se terminer automatiquement lorsque la condition que l'instruction while est supposée évaluer est vraie tant qu'elle n'a pas été évaluée en haut (ou en bas) de la boucle. L’instruction while ne peut pas être placée au milieu de la boucle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top