#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 }