|
|
|
| Уже несколька раз видел цикл:
while( 1 )
{
if( условие выхода ) break;
// код
}
|
И хочу узнать чем плох do while() что его не используют, когда надо.
do
{
//код
} while( условие выхода );
|
| |
|
|
|
|
|
|
|
для: aetep
(17.03.2007 в 18:56)
| | Он не плох и не хорош... while(1) в начале сразу настраивает программиста на то, что цикл будет выполняться долго, а в его теле, где-то предусмотрен выход. Цикл do ... while() настраивает на то, что тело цикла будет выполнено хотя бы один раз. Более того, часто можно встретить конструкцию
do
{
if( условие выхода ) break;
//код
if( условие выхода ) break;
//код
if( условие выхода ) break;
} while(false); |
Которая гарантирует не более одного цикла и эмулирует работу оператора goto, за счёт досрочного выхода из цикла при помощи break. | |
|
|
|
|
|
|
|
для: cheops
(17.03.2007 в 19:25)
| | Я демаю что разницы между while( 1 ) и do while() нету, так зачем лишний break; | |
|
|
|
|
|
|
|
для: aetep
(17.03.2007 в 19:31)
| | Приведенные тобой циклы не эквивалентны. Если условие выхода истинно до входа в цикл, то
тело цикла в первом случае не выполнится ни разу, а во втором случае выполнится один раз. | |
|
|
|
|
|
|
|
для: oleg_alexeev
(18.03.2007 в 00:29)
| | Как пошутил один мой одноклассник, цикл while сначала думает,а потом делает, а цикл do while сначала делает, а потом думает)) | |
|
|
|
|
|
|
|
для: oleg_alexeev
(18.03.2007 в 00:29)
| | >Приведенные тобой циклы не эквивалентны. Если условие выхода истинно до входа в цикл, то
>тело цикла в первом случае не выполнится ни разу, а во втором случае выполнится один раз.
Если в while() условье истина то цикл выполнится хотябы один раз, как и в do...while() | |
|
|
|
|
|
|
|
для: rty
(19.03.2007 в 11:54)
| | Виноват, ошибся. Надо было написать ".. то код в первом случае не выполнится ни разу ...".
Тело цикла, конечно, начнет выполняться, но там сразу идет проверка на условие, а потом
уже код.
Если бы было написано так:
while( 1 )
{
// код
if( условие выхода ) break;
}
|
Тогда это соответствовало бы do {} while(); | |
|
|
|
|
|
|
|
для: oleg_alexeev
(19.03.2007 в 12:53)
| | >
> while( 1 )
> {
> // код
> if( условие выхода ) break;
> }
>
|
>Тогда это соответствовало бы do {} while();
В начале темы этот код есть | |
|
|
|
|
|
|
|
для: rty
(19.03.2007 в 12:59)
| | В начале темы код такой:
while( 1 )
{
if( условие выхода ) break;
// код
}
|
Я так полагаю, что комментарий "// код" означает некий полезный кусок кода.
Так вот он не выполнится ни разу, если условие выхода истинно перед входом в цикл. | |
|
|
|