|
Тема |
Java puzzles |
|
Автор | puzzler (Нерегистриран) | |
Публикувано | 15.08.07 12:30 |
|
|
Здравейте!
Чета в момента книгата "Java Puzzlers: Traps, Pitfalls and Corner Cases" на Joshua Bloch и NealGafter. Попаднах на една странна за мен ситуация:
Следващия код представлява безкраен цикъл и се изпълнява според очакванията - т.е. броя на извикванията не се изписва никога:
public class InTheLoop {
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100;
public static void main(String[] args) {
int count = 0;
for (int i = START; i <= END; i++)
count++;
System.out.println(count);
}
}
А следващия код, който според мен би трябвало да се държи по същия начин, изписва 101:
public static void main(String[] args) {
int END = Integer.MAX_VALUE;
int START = END - 100;
int count = 0;
for (int i = START; i <= END; i++)
count++;
System.out.println(count);
}
Това е във връзка с puzzle 28. Доста време се чудя и не намирам обяснение...
Единственото, което ми идва на ума е някаква оптимизация, тъй като се държи различно при дебъг... Работя на Еклипс под 64 битов Дебиан, та може и с това да е свързано...
|
| |
|
|
|