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た。初期化するか (2 番目のスニペットとして)、初期化子を削除することができます (最初のスニペットとして)。

于 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 に答える