对于这个非常简单的问题感到抱歉,但我不知道是什么导致它:
在一个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旗舰版。 有没有人想要如何解决这个问题呢?
答案 0 :(得分:0)
break
只会将您带出当前的for
循环。在您的情况下,index
之后的break
将不会调用abbruch != 0
上的循环,因为break
会将您带出line
的循环。另一个break
语句会将您带出index
的循环。
这是基本原理,但到目前为止,最好的办法是使用调试器。我不会以这种方式使用break语句,因为它太混乱了。考虑使用return
语句代替break
将三重循环结构分解为函数调用。
另外,在for循环中本地化交互变量是个好主意,例如
for (int sect = 0; sect <= sections; sect++)
答案 1 :(得分:0)
你可能想要这个吗?
abbruch = dtime[sect][line];
(行代替0)
但巴塞巴所说的也是如此。休息只会打破一个循环。