-1

考虑这段代码:

int f=0;
for(......)
{
    ..........
    ..........
    //some code that does not alter f and z
    ..........
    ..........
    double prev = 0; int z = 0; int y = 0;
    for (int x = 0; x < c.timesteps; x++)
    {

        for (z=0; z < outs[i].campaigns.ToArray().Length; z++)
        {
            if (x == (outs[i].outage_dates[outs[i].campaigns[z]] * 7))
            {
                f = z;
                break;
            }
        }
        Console.WriteLine("\nF=" + f);
        Console.Read();
        for (y = f; y < outs[i].campaigns.ToArray().Length; y++)
        {
            .............

            .............

            .............
        }
    }
}

当我执行它时,z 的值随着 IF 条件变为真而变化。但 f 的值始终为零。当条件为真时,它应该更改为 z 的值。z 的值只能在离开最后一个循环并继续顶部循环时为零。

任何人都请告诉我这段代码有什么问题?我是否应用了一些错误的逻辑?

更新:

伙计们的问题已解决,一切正常。只是我无法看清楚。我在控制台上显示了每个变量的值(f 和 z 的值),我看到它工作正常。为它道歉。

4

1 回答 1

4

z 的值只能在离开最后一个循环并继续顶部循环时为零。

不,值z0在内部 for 循环的第一次迭代中,如果在第一次迭代期间满足条件,f则将被分配0,并将一直保留0到其余部分。或者,如果条件从未满足,f则将保持其旧值,即再次0

于 2013-04-17T11:59:45.457 回答