Каков наиболее эффективный способ выполнения кода, если цикл while выполняется хотя бы один раз?

#c #loops #while-loop

Вопрос:

У меня есть цикл while, и я хочу, чтобы какая-то строка кода была запущена, если цикл while выполняется хотя бы один раз. Если цикл while не выполняется, я хочу пропустить эту строку кода.

 while(condition) {
  doSomething();
}
doSomethingElse(); 
/* Only run doSomethingElse() if the while loop ran
at least once */
 

Я мог бы установить bool в значение false перед запуском и установить его в значение true, когда он запускается, но мне кажется, что это немного беспорядочно. Кроме того, этот цикл while находится внутри функции, которая может выполняться до 10^6 раз, и у нее есть ограничения по времени, поэтому я хочу, чтобы она работала как можно эффективнее. Есть ли какой-нибудь способ сделать это?

*примечание: Не путайте это с циклом do-while, который выполняется по крайней мере один раз, несмотря ни на что. Мне нужна строка кода, которая выполняется только в том случае, если цикл while выполняется хотя бы один раз.

Комментарии:

1. Слишком ленив, чтобы написать правильный ответ, но первая мысль такова: if (condition) { do something while (condition) somethingElse } .

2. @Austin » *примечание: Не путайте это с циклом выполнения, который выполняется по крайней мере один раз, несмотря ни на что. Мне нужна строка кода, которая выполняется только в том случае, если цикл while выполняется хотя бы один раз. »

3. Примечание об эффективности: Существует множество различных типов. У вас есть скорость, использование памяти, время кодирования, время отладки, время обслуживания и, возможно, еще несколько. Многие из них конфликтуют, поэтому вам нужно выбирать и выбирать.

Ответ №1:

Похоже, ты имеешь в виду

 if ( condition )
{
    while(condition) {
       doSomething();
    }
    doSomethingElse(); 
}
 

Или

 if ( bool b = condition )
{
    while( b) {
       doSomething();
       b = condition;
    }
    doSomethingElse(); 
}
 

или

 if ( condition )
{
    do {
       doSomething();
    } while ( condition );
    doSomethingElse(); 
}
 

Комментарии:

1. do..while Решение является лучшим выбором, так как ему не нужно condition дважды оценивать на 1-й итерации, как это делают другие представленные решения.

Ответ №2:

 int count=0;
while(condition) {
    doSomething();
    count=count 1;
}if(count >=1) {
    // Enter the block of code that you want to run at least once }