Я просто сделал эту простую "программу":
public static void main(String[] args) {
int i = 1;
int k = 0;
while (true) {
if(++i==0) System.out.println("loop: " + ++k);
}
}
После запуска этой программы я сразу получаю вывод:
(...)
loop: 881452
loop: 881453
loop: 881454
loop: 881455
loop: 881456
loop: 881457
loop: 881458
(...)
как будто i
всегда будет 0.
И на самом деле, когда я отлаживаю Eclipse, при приостановке программы i
всегда будет нулевым. При переходе через цикл, i
будет увеличиваться, но после возобновления и приостановки отладчика i
снова будет 0.
Когда я меняю i
на длинные, после запуска программы мне нужно подождать довольно долго, прежде чем увидеть первый loop: 1
. В отладчике после приостановки программы i
делает increment: это не 0, поэтому он работает так, как должен.
Какая проблема с ++i
как int?