Esercizio sul ciclo for in C ?

vincenzoj
int y=5, x=2, k;
for(k=y; k>0; k+=x) {x-=3; printf("#");}

Perchè questo ciclo non è infinito ? Inoltre non ho ben capito come si valuta l'istruzione x-=3 .

Risposte
claudio862
"x -= 3" è equivalente a "x = x - 3" (eccetto in C++ per tipi complessi). Stesso discorso per +=, *=, /=, %=, >>=, <<=, &=, |=, ^=.
Quindi dopo la prima iterazione k inizia a decrescere e prima o poi diventa negativo.

vincenzoj
Sisi questo lo sapevo. Non riesco a spiegarmi perchè questo frammento stampa 2 "#" .Quello rinchiuso nel for l'ho capito ma non capisco come dall'istruzione seguente si arrivi a 2.

claudio862
Conta quante volte il ciclo viene eseguito.
All'inizio y = 5, x = 2, k = y = 5.

Prima iterazione, continuo il ciclo? k = 5 > 0, sì, quindi esegui il corpo del ciclo.
x = x - 3 = 2 - 3 = -1
Stampa un cancelletto
Fine del corpo, k = k + x = 5 + -1 = 4

Seconda iterazione, continuo il ciclo? k = 4 > 0, sì, quindi esegui il corpo del ciclo.
x = x - 3 = -1 - 3 = -4
Stampa un cancelletto
Fine del corpo, k = k + x = 4 + -4 = 0

Terza iterazione, continuo il ciclo? k = 0 > 0, no, quindi esci dal ciclo.

In tutto hai stampato due cancelletti.

vincenzoj
Grazie, sei stato chiarissimo.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.