|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: May 2015
Messaggi: 26
|
[JAVA] Traccia di esecuzione
Salve, non riesco a capire questa traccia di esecuzione, cioè esce 7 ma a me viene 6:
// invocando mah(2) Codice HTML:
static int mah(int x) { int i; int y = 3; for (i = 0; i<4; i++) { if (y<5) { y = y+x; } else { y = y-i; } } return y+i; } 1) x = 2 y = 3 i = 0 y < 5 vero quindi y = 5 2) x = 2 y = 5 i = 1 y < 5 falso quindi y = 4 3) x = 2 y = 4 i = 2 y < 5 vero quindi y = 6 4) x = 2 y = 6 i = 3 y < 5 falso qundi y = 3 risultato y + i = 3 + 3 = 6 ma deve venire 7, cosa sbaglio? |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
y = 3 i = 4 i < 4 == false quindi il corpo non viene più eseguito (ma i è pur sempre == 4!). risultato y + i = 3 + 4 = 7 Ultima modifica di [Kendall] : 04-06-2015 alle 14:55. |
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: May 2015
Messaggi: 26
|
Ma i non va da 0 a 3? Perchè va fino a 4, il for non indica i<4, quindi a 4 non dovrebbe arrivarci? Ad esempio se era <= 4 fino a dove arrivava i?
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
Il ciclo si interromperà nel momento stesso in cui i viene incrementato a 4 e la condizione non è più vera. Ma in quel momento i sarà pari appunto a 4. Il classico ciclo for Codice:
for (int i = 0; i < length; i++) { // istruzioni } Codice:
int i = 0; while(i < length) { // istruzioni i++; } |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:06.