2015-10-07 2 views
4

J'apprends actuellement C et je veux vérifier si ma compréhension de la boucle for est correcte.Pour la compréhension débutant en boucle

Est-ce que la sortie A is 6 se produit parce que, après la 5ème fois que la boucle est exécutée, le +1 est ajouté à a (ce qui en fait 6), puis la condition est arrêté car il n'est plus <= 5?

int a; 
float b; 

b = 0; 

for (a = 1; a <= 5; a++) 
    b = b + 0.5; 

printf ("A is %d\t\t B is %.2f\n", a, b); 

sortie est

 
A is 6  B is 2.50 
+2

Vos hypothèses sont correctes, utilisez le suffixe '' f' pour les flotteurs b = b + 0.5f; ' –

+0

@AlterMann devrait-il être fait pour tous les points de flottement? Merci – NZSteve

+1

Seulement pour 'float',' 0.5' sans suffixe signifie 'double' –

Répondre

6

Oui.

Lorsque a == 5, la condition a <= 5 est vraie, le corps de la boucle (b = b + 0.5;) est exécuté. Après le corps, la partie a++ est toujours exécutée.

Cela fait a == 6. Ensuite, la condition a <= 5 est false, donc la boucle se termine.

Il est parfois utile d'utiliser la valeur de l'index après la boucle.

+0

Un grand merci Paul, content d'être sur la bonne voie – NZSteve

+1

@NZSteve Pas de soucis. Je me souviens d'avoir été un peu surpris la première fois que j'ai vu 'a == 6 'même si la boucle disait' a <= 5', mais ça a du sens quand on y pense. –

3

Vous avez raison. La fonction de la langue for (init; condition; finish) est une commodité pour une structure qui ressemble à ceci:

init; 
while (condition) { 
    ...insert code here... 
    finish; 
}