Извините за эту очень простую проблему, но я понятия не имею, что ее вызывает:
В проекте C ++ у меня есть цикл в цикле в цикле, и мне нужно оставить два внутренних, чтобы у меня была переменная для запроса. На первой итерации он работает нормально, но на второй не назначается назначение от dtime к abbruch. В отладчике dtime правильно имеет значение «1» и сокращенное «0», но оно остается после присваивания. Оба типа длинные.
for (sect = 0; sect <= sections; sect++)
{
abbruch = 0;
for(line = 0; line < maxlines ; line ++)
{
abbruch = dtime[sect][0];
if(abbruch != 0)
{
break;
}
for (index = 0; index < 30; index ++)
{
if (complicated query)
{
dtime[sect][0] = DiffTime[maxlines * sect + line];
break;
}
}
}
}
Я использую VS2012 Ultimate.
У кого-нибудь есть идеи, как это может произойти, или как это решить?
Вы, возможно, хотели поставить это?
abbruch = dtime[sect][line];
(строка вместо 0)
Но и то, что сказал Ватсеба, правда. Перерыв сломает только один цикл.
break
только выведет тебя из текущего for
петля. В вашем случае, цикл закончился index
не будет вызван после break
когда abbruch != 0
как break
выведет вас из цикла line
, Другой break
заявление выведет вас из цикла index
,
Это обоснование, но, безусловно, лучшее, что можно сделать, — это пройти через отладчик. Я бы не стал использовать операторы break таким образом, поскольку это слишком запутанно. Рассмотрите возможность разбиения структуры тройного цикла на вызовы функций, используя return
заявления вместо break
s.
Кроме того, это хорошая идея для локализации целых переменных в циклах for, например
for (int sect = 0; sect <= sections; sect++)