2012-02-15 2 views
1
int i; 
i=0; 
for (i=0;i>2;i++) 
    { 
    repeat((3),"|",var); 
    printf("\n");   
    } 

Pour une raison quelconque, il obtient le "pour" et il le saute. J'ai essayé de mettre le int i en dehors du pour et même l'a initialisé en dehors du pour et dans le debug c'est zéro. Tout ce dont j'ai besoin c'est de faire deux fois le tour de ce code.Quel est le problème avec cette boucle dans C?

+0

Vous pouvez définir 'i = 0 ', et vous pouvez avoir la boucle continuer à courir alors que' i> 2', mais vous ne peut pas faire les deux et s'attendre à ce que le bloc de boucle soit traité. –

Répondre

5

Change:

for (i=0;i>2;i++) 

à:

for (i=0;i<2;i++) 

vous testez si elle est > 2 qui échouera si elle ne pénètre jamais dans la boucle.

+0

Merci, j'ai eu à == et cela ne fonctionnait pas alors j'ai changé pour> et toujours pas de différence – StephanM

1
for (i=0;i>2;i++) 

vous voulez

for (i=0;i<2;i++) 

Sinon, votre corps de la boucle for ne sera jamais exécutée.

2

Il est à cause de votre condition de boucle: i > 2

La i variable, il ne dépasse pas 2, donc la condition i > 2 évaluera à 0 (FAUX)

Hope it helps

1

donc permet de décomposer une boucle for. Il y a trois pièces pour (piece1; piece2; piece3)

piece1 = réglage d'une variable, cela se produira une fois à la première course de la boucle

piece2 = alors que la condition est vraie, continuer à boucle

peice3 = à la fin de chaque itération, effectuez cette action. Donc, votre boucle dit maintenant le premier ensemble i = 0, alors que i est supérieur à 2 (ce que vous venez de dire n'est pas) ... à ce stade, votre compilateur a déjà sauté, parce que la condition ne sera jamais Sois sincère. Pour cette raison, tester == ne fonctionnera pas non plus, car cela le fera boucler alors que i est égal à 2, ce qui ne sera jamais vrai car le seul endroit où vous mettez à jour i est dans la boucle. La condition intermédiaire n'est pas une condition de rupture, c'est une condition de continuation.

-1

Change vous pour boucle for (i = 0; i < 2; i ++)

+0

Cela a vraiment ajouté quelque chose que les autres réponses ne mentionnaient pas, ne pensez-vous pas? – Lundin