четверг, 15 марта 2007 г.

Java Puzzle 26: In the Loop

int max = Integer.MAX_VALUE;
int count = 0;
for (int i = max - 100; i <= max; i++)
count++;

Чему будет равно count после выполнения программы?
Если вы думаете, что 100, то вы не заметили необычного для цикла for условия ('<=' вместо '<'), которое увеличивает количество итераций на 1.
Если вы думаете, что 101, то вы не учли в все значения типа int меньше или равны Integer.MAX_VALUE и цикл будет выполняться вечно.
Где бы вы не использовали целочисленные типы не забывайте про граничные значения. Помните, что о переполнении в арифметических выражениях никак не сообщается.

Комментариев нет:

Отправить комментарий