Question

J'ai une boucle do-while dans une fonction qui ressemble à quelque chose comme ceci:

do
{
    // a bunch of stuff
    if (something < something else)
    {
        return true;
    }
    else if (stuff > other stuff)
    {
        if (something != other stuff)
        {
             return false;
        }
        else
        {
              return true;
         }
     }
} while (condition);

Ma question est ici avec le condition à la fin. La seule façon que je peux chose de garder une trace de ce serait de déclarer une variable booléenne avant la boucle, et l'ont mis de valeur pour correspondre à la valeur return et ont le contrôle de while() pour que, après chaque itération. Bien que cela fonctionnerait, il est semble plutôt inélégante pour moi et je me demandais s'il y avait une façon que je pouvais avoir le robinet de while() dans la valeur return à la place.

Était-ce utile?

La solution

En supposant que votre code est incorrect en raison de vous essayer de paraphraser, c'est ce que vous devez faire pour répondre à vos besoins du retour étant le même que le while();

Pour d'autres, ce code ci-dessous est une logique incorrecte, mais je suis en train de le garder dans le code de pseudo similaire il a utilisé. En gros, si vous voulez que le temps pour mimer la valeur de retour, vous avez besoin du ! du retour pour que la condition de sortie.

do
{
    // a bunch of stuff
    if (something < something else)
    {
        return !condition;
    }
    else if (stuff > other stuff)
    {
        if (something != other stuff)
        {
             return condition;
        }
        else
        {
              return !condition;
        }
    }
} while (condition);

Autres conseils

Il est pas clair comment votre état ressemble. Quoi qu'il en soit, vous voulez probablement une boucle infinie:

for (; ;) {
    … your code here …
}

ou

while (true) {
    … your code here …
}

Cette boucle ne sera jamais arrêter par lui-même ... mais puisque vous sortez à l'aide return ce n'est pas un problème.

Vous pouvez simplement dire

 do
{
    // a bunch of stuff
    if (something < something else)
    {
        return true;
    }
    else if (stuff > other stuff)
    {
        if (something != other stuff)
        {
             return false;
        }
        else
        {
              return true;
         }
     }
     else if(exit_condition)
      break;
} while (1);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top