Я заметил ошибочное поведение, выполняющее следующий java-код:
public class Prototype {
public static void main(String[] args) {
final int start = Integer.MAX_VALUE/2;
final int end = Integer.MAX_VALUE;
{
long b = 0;
for (int i = start; i < end; i++) {
b++;
}
System.out.println(b);
}
{
long b = 0;
for (int i = start; i < end; i++) {
b++;
}
System.out.println(b);
}
}
}
Обе петли делают точно то же самое. Тем не менее, вторая выводит недетерминированное ошибочное значение. Я запускаю код в Linux с помощью Version:
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
Пример вывода:
1073741811
141312
Можете ли вы воспроизвести его? Это ошибка?
Изменить: Странно
final int end = Integer.MAX_VALUE - 1;
отлично работает.