Эти две петли всегда эквивалентны? - PullRequest
3 голосов
/ 14 сентября 2011

В языке программирования Java следующие два цикла эквивалентны для любого выражения exp и тела body body ? Единственным побочным условием должно быть то, что только что введенная переменная b не появляется в другом месте метода (и не скрывает атрибут, ...)

while(exp) {
    body
}

и

for(boolean b = exp; b; b = exp) {
    body
}

Ответы [ 2 ]

5 голосов
/ 14 сентября 2011

Да, при этих предположениях.

Конструкция for проверяет условие перед первой итерацией, поэтому, если b равно false, тело никогда не будет выполнено.Другими словами, в вашем примере кода exp вычисляется точно один раз перед каждой итерацией цикла, и результат используется для определения, выполнять эту итерацию или нет.

Но зачем вамХотите написать код, подобный этому?

0 голосов
/ 14 сентября 2011

Нет, они не.Сделайте ваш код читабельным.

Один - для подсчета

Другой - для ожидания выполнения условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...