Изменить условие цикла при выполнении

152
28 сентября 2021, 20:40

Не страшно же, если во время работы цикла я изменю его условие?

const int
    E_LOWRIDE_AROOWS_ARRAY = 30;
int
    i,
    index,
    nextIndex,
    createArrowId = 23,
    numArrows = 8;
index = createArrowId+numArrows;
index = index >= E_LOWRIDE_AROOWS_ARRAY ? E_LOWRIDE_AROOWS_ARRAY : index;
nextIndex = index-E_LOWRIDE_AROOWS_ARRAY;
for (i = createArrowId; i < index; i++)
{
    //какая-то задача
    if (i >= E_LOWRIDE_AROOWS_ARRAY)
    {
        i = 0;
        index = nextIndex;
    }
}
Answer 1

во время работы цикла я изменю его условие?

Уточнение: не условие, а значение переменной цикла и значение переменной из условия завершения цикла.

Синтаксис С такое не запрещает. Но это считается очень дурным стилем. Дело в том, что в таком случае практически невозможно, читая текст программы, понять - завершится цикл когда нибудь, или нет?

Более того, даже во время тестирования программы нет никаких гарантий того, что протестированы все возможные варианты выхода из цикла.

Т.е. такую программу невозможно толком ни проанализировать, ни протестировать.

Ситуация, которую Вы показали, очень прямо намекает на то, что внутри основного цикла должен быть либо вложенный цикл, либо вызов функции, выполняющей вложенную обработку.

READ ALSO
Работа с object[] и List object

Работа с object[] и List object

Я добавляю object[] в List objectКак я могу удалить этот object[]?

253
C# асинхронная загрузка файла

C# асинхронная загрузка файла

Целиком задача заключается в загрузке трех картинок для трех PictureBoxПо условию задачи пользователь может загружать их в любой момент, поэтому...

90
C# перенос кода в функцию [закрыт]

C# перенос кода в функцию [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

299
Незапускается поиск Bluetooth устройств

Незапускается поиск Bluetooth устройств

Пишу кроссплатформенную реализацию поиска BLE устройствИмею следующий код обертки над стандартным UWP классом:

150