考虑以下代码:
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离开最后一个循环并继续顶循环时,z的值只能为零。
任何人都请告诉我这段代码有什么问题?我应用了一些错误的逻辑吗?
更新
伙计问题解决了一切正常。只是我无法清楚地看到它。我在控制台上显示了每个变量的值(f和z的值),我发现它的工作正常。为此道歉。
答案 0 :(得分:4)
当z离开最后一个循环时,z的值只能为零 继续上一圈。
不,内部for循环的第一次迭代中z
的值为0
,如果在第一次迭代期间满足条件,则f
将被分配0
并且它将保持0
直到其余部分。或者,如果从未满足条件,那么f
将保留其旧值0