Simple boucle do while utilisant while(true);
À de nombreuses reprises dans les exemples de programmes en C, je suis tombé sur ce genre de boucles. Que faire de ces sortes de boucles de vraiment faire?
do {
while (...) //Check some condition if it is true.
{
calculation 1
}
//Some new condition is checked.
} while(true);
Quel est le besoin de while(true);
Est-il utilisé pour la boucle infinie? Quelqu'un peut-il expliquer ce qu'est au-dessus de la boucle fait vraiment. Je suis nouveau dans la programmation en C
Je n'ai jamais vu un
do while(true)
. C'est une boucle infinie, mais la idiomatiques (et clair) la façon d'écrire une si for (;;)
.
OriginalL'auteur Dev | 2013-02-18
Vous devez vous connecter pour publier un commentaire.
Ces boucles sont utilisés lorsque l'on veut boucle pour toujours et à le sortir de la condition de la boucle n'est pas connue. Certaines conditions sont définies à l'intérieur de la boucle, avec soit pause ou retour déclarations de sortir de la boucle.
Par exemple:
Ces boucles sont comme tous les autres tandis que la boucle avec condition d'arrêt de la boucle est dans le corps de la boucle while sinon, il sera toujours courir (ce qui n'est jamais l'intention d'une partie du code jusqu'à ce que nécessaire).
Elle repose sur la logique du programmeur seulement ce qu'il/elle veut faire.
OriginalL'auteur Sargam Modak
oui il est utilisé pour la boucle infinie,dans ce cas, la meilleure pratique est de sortir d'un état
OriginalL'auteur Cris
En C, toutes les boucles boucle tant qu'une condition est vraie. De manière explicite
true
à la condition que signifie vraiment "boucle tout entrue
est vrai", et ainsi de boucles pour toujours.for(;;)
où et quel est l'état? 🙂Je n'ai accès qu'à la C++11 spec, mais il est dit qu'un
for
boucle est équivalent à unwhile
boucle, et §2 de la section 6.5.3 dit "Un manque de condition implicitewhile
Clause équivalente àwhile(true)
"Dans 6.8.5.3 (2): "omis expression-2 est remplacée par une constante non nulle", où expression-2 est la condition de la boucle. Si la condition est implicitement inséré si vous n'écrivez pas un (mais bien sûr, en vertu de l'-comme si, règle générale, vous obtiendrez une inconditionnelle de sauter souvent).
OriginalL'auteur Some programmer dude
Cette boucle est infinie et si vous quel est votre programme de jamais mettre fin à de tels lop vous avez besoin d'avoir un
break
ou unreturn
(ou, dans certains cas, de lever une exception) déclaration en vertu de la condition donnée dans une telle boucle, autrement, un tel programme ne sera jamais la fin.goto
...OriginalL'auteur Ivaylo Strandjev
Une boucle infinie est utile si la vérification de la stop-condition ne peut pas être fait dans l'avant (comme avec
for
etwhile
), ni à l'arrière (comme avecdo{}while
). Au lieu que vous venez de boucler indéfiniment et dans le milieu du code, vous pouvez vérifier une condition et une pause:if(something) break;
.OriginalL'auteur Bernd Elkemann
parfois, nous l'utilisons par exemple :
un exemple de winsock api de windows, par cette façon, vous pouvez écouter à partir d'un port.
OriginalL'auteur La VloZ
Cette boucle s'exécute à l'infini, et elle peut entraîner une exécution erorr s'arrête pas. Si vous faites ce genre de boucle, assurez-vous d'avoir une instruction de saut à l'intérieur pour s'assurer que la boucle va s'arrêter à un certain point.
Similaire à ce
Si votre programme atteint un point où la condition est vraie, il sera mis automatiquement fin à l'-lors de la boucle et de passer le code après que.
OriginalL'auteur krato
Le grand facteur de différenciation entre les boucles:
est que le premier est utilisé pour les boucles qui se produisent zéro ou plusieurs fois, tandis que la seconde est pour les boucles qui se produisent un ou plus de temps.
En d'autres termes, la condition pour
while
est vérifié au début de la boucle, et pourdo while
, il est vérifié à la fin.Souvent, vous allez voir le code là où les développeurs ne semblent pas savoir sur
do-while
dans ce qu'ils vont écrire:qui aurait pu être mieux écrit que:
Cependant, dans votre cas particulier où la condition est toujours
true
, il n'a pas vraiment d'importance. La suite de boucles sont essentiellement équivalentes (à l'aide de1
pour le cas):La première
for
boucle est probablement la manière canonique de faire une boucle infinie, en tirant parti du fait que, si vous omettez la poursuite de la condition de la boucle, il suppose qu'il est toujours vrai.La deuxième
for
boucle est simplement en déplaçant le corps de la boucle dans le par itération partie de lafor
déclaration.La première
while
est aussi parfois vu dans la nature, lado-while
probablement moins. La seule différence ici est que la première boucle pour toujours à la vérification de la boucle d'en haut, la dernière boucle pour toujours à la vérification de la boucle du bas.La finale
while
boucle est à l'aide de la C opérateur virgule dans un sens vous n'avez probablement jamais 🙂Que la dernière est très rare de nos jours mais est probablement ce qu'ils ont tous les optimiser au niveau du code machine de niveau.
OriginalL'auteur paxdiablo