C ++ Назначение не работает

Извините за эту очень простую проблему, но я понятия не имею, что ее вызывает:

В проекте 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.
У кого-нибудь есть идеи, как это может произойти, или как это решить?

-1

Решение

Вы, возможно, хотели поставить это?

abbruch = dtime[sect][line];

(строка вместо 0)

Но и то, что сказал Ватсеба, правда. Перерыв сломает только один цикл.

0

Другие решения

break только выведет тебя из текущего for петля. В вашем случае, цикл закончился index не будет вызван после break когда abbruch != 0 как break выведет вас из цикла line, Другой break заявление выведет вас из цикла index,

Это обоснование, но, безусловно, лучшее, что можно сделать, — это пройти через отладчик. Я бы не стал использовать операторы break таким образом, поскольку это слишком запутанно. Рассмотрите возможность разбиения структуры тройного цикла на вызовы функций, используя return заявления вместо breaks.

Кроме того, это хорошая идея для локализации целых переменных в циклах for, например

for (int sect = 0; sect <= sections; sect++)
0

По вопросам рекламы ammmcru@yandex.ru