Donc, j'ai quitté la boucle totalement vide et les suivantes: P>
using System; public class Program { public static void Main() { int i = 0; for(;;){ if(i < 5){ Console.WriteLine(i); i++; } else { break; } } } }
3 Réponses :
A pour (...) code> en boucle sans initialisation, condition, étape d'itération
pour (;;) code> est une boucle infinie em> qui fonctionne pour toujours à moins d'une condition de sortie explicite donnée p>
Oh! C'est une boucle infinie car il n'y a rien là-bas, mais il itère à travers le int i = 0 code> et incrémente cette variable, une fois qu'il atteint 4, l'expression dans la clause
code> est Évalué, alors il enfreint la boucle infinie. Est-ce correct?
@Eduardoalmereida Oui. Cela n'a rien à voir avec la boucle pour savoir sur le i. Cela ne sait pas sur le i. Le corps de la boucle de pour la boucle est en train de le faire avec le si () et le i ++.
Pourriez-vous ajouter ce commentaire à votre réponse? Les langages de programmation sont des trucs fous. Je les utilise, mais je ne connais pas la théorie derrière eux. C'est des problèmes.
Il n'y a pas de différence entre pour (;;) code> et
tandis que (vrai) code>. Vous pouvez utiliser ce que vous voulez. P>
Je sais que. Je sais que pour (;;) est une boucle infinie, mais je ne sais pas comment l'initialisation, autrefois vide, comprend maintenant que je parle de int i = 0 code>
Eh bien, dans l'échantillon de code, vous avez fourni int i = 0; code> est une déclaration de variable en dehors de la boucle afin que vous puissiez y accéder à partir de la portée intérieure.
Chaque partie de A pour la boucle (;;) contient une déclaration. Comme vous connaissez la première section pour l'initialisation, vérifiez et enfin la section Incrément / Décrémentation. p>
Si vous les laissez vide, la boucle ira déterrera pour des moments infinis comme il arrive pendant (vrai). P>
docs.microsoft.com/en-us/dotnet/ Csharp / Langue-Références / ...
Ceci est une syntaxe pour i> qui n'a aucune initialisation, aucune condition de sortie et sans incrément. Toutes ces pièces sont facultatives par des spécifications linguistiques. Le compilateur doit le comprendre et crée une boucle infinie, à moins que le code rencontre une déclaration de pause
pour (;;) code> est une simple boucle infinie i>: Initialiser rien, vérifiez (pour la sortie) rien, mise à jour (incrément) rien;
tandis que (vrai) code> est une syntaxe alternative
Mais comment la boucle comprend-elle que l'initialisation se réfère à
int i = 0 code>? Je pourrais mettre une variable là-bas et autant de variables que je le souhaite.
"Mais comment la boucle comprend" i> la boucle ne comprend rien. La boucle est une commande - répétez ceci sur. La condition dans la boucle est
pour (; tandis que;) code>. Dans cette boucle, cette condition est manquante et contrôle le nombre de itérations est codé dans la boucle. Où vous déclarez votre index valrible (
i code>) et où vous incrémentez ce n'est pas important. Vous pouvez faire
int i = 0; tandis que (i <10) {i ++;} code>. Ce n'est pas différent de
pour (int i = 0; i <10; i ++) code>