C ++作业不起作用

时间:2013-05-23 13:37:39

标签: c++ variable-assignment

对于这个非常简单的问题感到抱歉,但我不知道是什么导致它:

在一个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旗舰版。 有没有人想要如何解决这个问题呢?

2 个答案:

答案 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)

但巴塞巴所说的也是如此。休息只会打破一个循环。