Quando eseguo questa classe il ciclo sembra alla chiusura anticipataper il ciclo di terminazione precoce quando si confrontano a Integer.MAX_VALUE e utilizzando System.out.println
class Test {
public static void main(String[] args) {
int result = 0;
int end = Integer.MAX_VALUE;
int i;
for (i = 1; i <= end; i += 2) {
System.out.println(i);
}
System.out.println("End:" + i);
}
}
uscita è:
1
3
5
...
31173
31175
End:31177
Perché finisce qui? È interessante notare che se ho rimosso lo System.out.println(i)
nel ciclo for, l'output sarebbe End:-2147483647
. Ovviamente il valore in i
ha wrapped round
.
versione Java che sto utilizzando è
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
Provare a stampare Integer.MAX_VALUE –
Non riesco a ottenere tale risultato. Sembra che il tuo buffer sia pieno o qualcosa del genere. –
Il codice non dovrebbe mai stampare End, anche questo è un bug (anche se leggermente diverso), il loop che hai scritto è infinito, sarò sempre <= Integer.MAX_VALUE. – user439407