10
votes

Faire simple pendant que la boucle en utilisant tandis que (vrai);

Plusieurs fois dans les exemples de programmes C, je suis tombé sur ce genre de boucles. Qu'est-ce que ces types de boucles font vraiment? xxx

Quel est le besoin de tandis que (vrai); est-il utilisé pour une boucle infinie? Est-ce que quelqu'un, s'il vous plaît expliquer ce que la boucle ci-dessus fait vraiment. Je suis nouveau à C Programmation


1 commentaires

Je n'ai jamais vu un faire alors que (vrai) . C'est une boucle infinie, mais la voie idiomatique (et claire) d'écrire un si pour (;;) .


8 Réponses :


1
votes

Oui, il est utilisé pour la boucle infinie, dans ce cas, la meilleure pratique consiste à sortir de la recherche d'une condition xxx


0 commentaires

0
votes

in C toutes boucles boucle pendant qu'une condition est vraie. Donc, un true dans la condition signifie vraiment "boucle tandis que vrai est vrai" et donc des boucles pour toujours.


3 commentaires

Dans pour (;;) où ou quelle est la condition? :-)


@Jens, je n'ai accès qu'à la spécification C ++ 11, mais il dit qu'un pour est équivalent à un pendant boucle et §2 de la section 6.5.3 dit "une condition manquante rend le implicite tandis que équivalent à tandis que (vrai) "


@Jens in 6.8.5.3 (2): "Une expression expression-2 est remplacée par une constante non nulle", où expression-2 est la condition de boucle. Donc, la condition est implicitement insérée si vous n'écrivez pas une (mais bien sûr sous la règle AS-Si, vous obtiendrez souvent un saut inconditionnel).



0
votes

Cette boucle est infinie et si vous avez besoin de votre programme de résilier avec un tel LOP, vous devez avoir soit un Break ou un retour (ou dans certains cas, lancez un Exception) La déclaration sous condition donnée dans une telle boucle, sinon un tel programme ne terminera jamais.


0 commentaires

0
votes

Une boucle infinie est utile si la vérification de la condition de l'arrêt ne peut être ni faite à l'avant (comme avec pour et pendant ) ni à l'arrière (comme avec do {} tandis que ). Au lieu de cela, vous venez de boucler pour toujours et au milieu du code, vous pouvez vérifier une condition et casser: si (quelque chose) cassez; . .


0 commentaires

0
votes

Parfois, nous l'utilisons par exemple: xxx

Un exemple de Winsock Windows API, de cette façon, vous pouvez écouter à partir d'un port.


0 commentaires

0
votes
if(condition)
   break;

0 commentaires

0
votes

Le facteur de différenciation général entre les boucles suivantes:

for (;;) { doSomething(); }
for (;;doSomething());

while (1) { doSomething(); }
do { doSomething(); } while (1);

while (doSomething(),1);

BADPAX: doSomething(); goto BADPAX;


0 commentaires

6
votes

Ces boucles sont utilisées lorsque l'on veut boucle pour toujours et que la condition de démolition de la boucle n'est pas connue. Les conditions de certidian sont situées à l'intérieur de la boucle avec la pause forte> ou Retour forte> à sortir de la boucle. Par exemple:

while(true){
    //run this code
    if(condition satisfies)
        break;    //return;
}


0 commentaires