Dans la conférence de ma université aujourd'hui, nous avons reçu cette suivi:
entrée: 1, 2, 3, 0, 4 p>
et deux codes différents p>
(1) < / p> (2) p> Je comprends le premier code se termine par une sortie de 2, mais apparemment la seconde sortie se termine avec une sortie de 1,5 (6/4). Ma confusion est terminée pourquoi le nombre est 4 si la boucle devient false après avoir saisi zéro - est-ce l'emplacement de la CIN dans la condition, le x initialisé? Je suis confus. Merci! P> p>
3 Réponses :
Dans la première boucle, la valeur 0 n'est pas contré. Tandis que dans la seconde boucle, la valeur 0 est contré dans le nombre de variable.
do { cin >> x; sum += x; count++; } while ( x != 0 );
Dans le second cas, la boucle est entrée em> avec x == 0 code>. Il arrête après em> ajout de 0 à
somme code> et incrémentation
compte code>. P>
Que se passe-t-il lorsque vous atteignez le zéro? vous lisez dans le zéro et découvrez que x est 0. Vous arrêterez l'itération. P> sum += 0; // the current value of x
count++; // one summand more
int Sum x = 0; code> ne compile pas.
int x = 1; code> vs
int x = 0; code> est uniquement pour éviter le deuxième code pour entrer sur la boucle. Le premier code pourrait avoir
int x = 1; code> et il n'y aurait aucune différence. Ont-ils appris comment utiliser un débogueur?
Comment déboguer de petits programmes
Related (Duplicaté possible): Comment fonctionne C ++ Manipul &&? (Évaluation de court-circuit) . TL / DR: La 1ère boucle ne compte pas le nombre si le numéro de lecture est
0 code>, tandis que le 2ème fait.