0

为什么这段代码不起作用?

    private void Function(int starts , int ends)
{
    int i = starts;
    int z = ends;

    for(i; i < z; i++)
    {
        [...]
    }
}

就是说: 错误3 只有赋值、调用、递增、递减和新对象表达式可以用作语句。

怎么做才能让代码工作?

4

5 回答 5

7
    What to do to make code work?

怎么样

for (; i < z; i++)
{
    [...]
}

'z'或者为什么在可以做的时候创建一个额外的变量

for (int i = starts; i < ends; i++)
{
    [...]
}

为什么你的代码不起作用!!

因为 for 循环的语法是

for (initializer; condition; increment or decrement)
{

}

您没有在初始化程序i中初始化。您可以初始化它(作为我的第二个片段)或删除初始化器,如果您在一些较早的语句中初始化它(作为我的第一个片段)。

于 2012-07-02T06:31:13.063 回答
2

i就其本身而言,它不是一个陈述,而是一个表达。就像您不能简单地i;在代码中的某处编写一样。for循环的初始化部分需要初始化;但是,如果(就像这里的情况)循环已经初始化(i已经设置),你可以像 Nikhil 所示的那样省略它。干脆做for(;i<z;i++)

于 2012-07-02T06:35:47.257 回答
1

for 循环的第一部分采用初始化语句。i不是声明。如果您不想初始化任何内容,则可以将该部分留空,如 Nikhil 的回答:

for(; i < z; i++) 
{ 
    [...] 
} 
于 2012-07-02T06:33:59.270 回答
0

永远不要在 for 循环中使用外部定义的变量作为索引器。

private void Function(int starts , int ends)
{
    // int i = starts; // don't do it. you're exposing yourself to headaches if/when you lose control of the value of i
    int z = ends;

    for(int i = starts; i < z; i++) //first statement of for loops initializes the indexer
    {
        [...]
    }
}
于 2012-07-02T06:35:21.880 回答
0

我认为这是更好的答案,不是吗?

private void Function(int starts , int ends)
{
    for(int i = starts; i < ends; i++)
    {
        [...]
    }
}
于 2012-07-02T06:36:07.413 回答