петли в Яве - PullRequest
       20

петли в Яве

0 голосов
/ 17 ноября 2011

Если у меня есть следующий код, чему будет равно целое число «i» после его выполнения?Увеличивается ли цикл после оператора break?

int i = 0;
for(int foo = 0; foo < 10; foo++,i++){
    break;
}

Ответы [ 4 ]

5 голосов
/ 17 ноября 2011

После того, как цикл for завершает одну итерацию, он выполняет код инкремента (в вашем случае foo++,i++). Поскольку ваш цикл прерывается до того, как он завершает одну итерацию, ни foo, ни i не увеличивается.

4 голосов
/ 17 ноября 2011

Вы можете посмотреть это в стандарте. Цикл for с разрывом по определению похож на while, goto, вот так:

for( init; test; incr){
   break;
}

есть

init
while(test){
   // do things
   goto end
   incr
}
end:

Таким образом, поскольку разрыв всегда выполняется, он никогда не будет увеличивать часть приращения, и ни foo, ни i не будут увеличиваться.

3 голосов
/ 17 ноября 2011

Почему бы тебе не поставить отпечаток и не увидеть ...

Я собираюсь сказать, что это заканчивается тем, что вы начали (т. Е. Нулем - приращение происходит после того, как код внутри внутри for выполняется - поскольку вы его прервете, он никогда не получит приращения).

0 голосов
/ 17 ноября 2011

Он печатает 0, и это именно то, что вы ожидаете, что он напечатает.Предложение постинкрементного выполнения выполняется после блока кода, но мы разбиваем середину блока кода.Таким образом, приращение поста никогда не выполняется.

...