-1

抱歉这个看起来很简单的问题,但我不知道是什么原因造成的:

在一个 C++ 项目中,我有一个循环中的一个循环,并且必须保留内部两个,所以我有一个用于查询的变量。在第一次迭代中它工作正常,但在第二次从 dtime 到 abruch 的分配不起作用。在调试器中,dtime 正确地具有值“1”和缩写“0”,但这在分配之后仍然存在。两者都是 long 类型。

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。有没有人知道如何发生这种情况以及如何解决它?

4

2 回答 2

0

你是不是想放这个?

abbruch = dtime[sect][line];

(行而不是 0)

但巴斯巴所说的也是真的。一个 break 只会打破一个 for 循环。

于 2013-05-23T13:45:39.630 回答
0

break只会将您带出当前for循环。在您的情况下,index将不会在breakwhen之后调用循环,abbruch != 0因为这break将使您脱离循环 over line。另一条break语句将带您脱离循环index

这是基本原理,但是,到目前为止,最好的办法是使用调试器逐步完成。我不会以这种方式使用 break 语句,因为它太混乱了。return考虑使用语句代替breaks将三重循环结构分解为函数调用。

此外,最好在 for 循环中本地化交互变量,例如

for (int sect = 0; sect <= sections; sect++)
于 2013-05-23T13:41:12.033 回答