0
votes

Confus sur tandis que (Cin >> x && x! = 0) (quand int x = 0) Versus tandis que (x! = 0 && Cin >> x) (lorsque INT x = 1)

Dans la conférence de ma université aujourd'hui, nous avons reçu cette suivi:

entrée: 1, 2, 3, 0, 4

et deux codes différents

(1) < / p> xxx

(2) xxx

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!


4 commentaires

int Sum x = 0; ne compile pas.


int x = 1; vs int x = 0; est uniquement pour éviter le deuxième code pour entrer sur la boucle. Le premier code pourrait avoir int x = 1; 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 , tandis que le 2ème fait.


3 Réponses :


0
votes

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 );


0 commentaires

1
votes

Dans le second cas, la boucle est entrée avec x == 0 . Il arrête après ajout de 0 à somme et incrémentation compte .


0 commentaires

4
votes

Que se passe-t-il lorsque vous atteignez le zéro? xxx pré>

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


0 commentaires