Для переменной автоинкремента цикла - PullRequest
1 голос
/ 13 октября 2019

В for(int i=0; i < 5; i++) цикл не i увеличивается на i++ еще до того, как printf его прочитает? Если это так, он должен вернуть i=1 верно? Какова концепция, которая сначала возвращает 0.

public class Application {
    public static void main(String[] args) {

        for(int i=0; i < 5; i++) {
            System.out.printf("The value of i is: %d\n", i);
        }
    }
}

Ответы [ 4 ]

2 голосов
/ 13 октября 2019

14.14.1. Основное для оператора

BasicForStatement:
    for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement
  • Если выражение отсутствует или присутствует, а значение, полученное в результате его оценки (включая возможную распаковку), равно true, тоСодержимое Заявление выполнено. Тогда есть выбор:

    • Если выполнение инструкции завершается нормально, то следующие два шага выполняются последовательно:

      • Сначала,если присутствует часть ForUpdate, выражения вычисляются в последовательности слева направо;их значения, если таковые имеются, отбрасываются. Если по какой-либо причине вычисление какого-либо выражения завершается преждевременно, оператор for завершается преждевременно по той же причине;любые выражения оператора ForUpdate справа от того, который завершился внезапно, не оцениваются.

      • Во-вторых, выполняется другое для шага итерации.

В вашем примере это означает, что i++ будет выполнено после строки System.out.printf.

0 голосов
/ 13 октября 2019

В цикле for сначала цикл запускается, проверяя, только если i <5. Так как он истинный, он даст доступ к циклу, где все еще i остается нулевым (0), и выполнит операторы внутри цикла, а затем увеличит iна единицу (i ++). Где тогда увеличенное значение i будет учтено при рассмотрении условия. </p>

0 голосов
/ 13 октября 2019

Поведение такое же, как у

 for(int i=0; i < 5; ) {
            System.out.printf("The value of i is: %d\n", i);
           //whatever


           //at the very end; just before exiting the loop 
           i = i + 1;
           // exit the loop
        }
0 голосов
/ 13 октября 2019

Нет, приращение цикла вычисляется в конце тела цикла.

...