Циклы без цела в Java.Как Рассчитывает компилятор?
// Тело цикла for может быть пустым
public class Empty3 {
public static void main(String args[]) {
int i;
int sum =0 ;
for(i = 1; i <= 5; sum+= i++);// В цикле отсутствует тeло
System.out.println("Cумма: "+sum);
}
}
сложить со значением переменной sum результат суммирования значений переменных sum и i, а затем инкрементировать значение переменной i. Следовательно, данный оператор равнозначен следующей последовательности операторов.
sum = sum + i;
i++;
Ответ будет:15
Как компилятор рассчитывает?Не могу понять текст.
Если sum =2//Тогда ответ 17.Как так ? Помогите дураку!
А в чем не понимание?
Вот результаты каждого цикла:
1. sum = 0 + 1
2. sum = 1 + 2
3. sum = 3 + 3
4. sum = 6 + 4
5. sum = 10 + 5
В итоге 15, если начальная sum = 2, то будет 17. В чем сложность?
Это базовые знания.
for (^init^; ^condition^; ^expression^) { ^body^ }
Тело можно выкинуть, как и остальные части.
^init^ выполняется только 1 раз в начале цикла.
На следующих шагах при каждом проходе цикла будет выполнятсья ^expression^, затем проверятся валидность ^condition^
можете хоть полностью пустым оставить
for (;;);
работать будет ;)