2

私はこのコードに出くわしました

for(; tail < len;tail++){
        str[tail] = 0;

なぜ「;」があるのですか 「for(」の直後?

私がそれを取り出したとき、それはいくつかのエラーを思いついた。

4

9 に答える 9

9

これは、初期化がないことを意味します(前の行ですでに実行されています)。

一般に、forループの構文は次のとおりです。

for (initialization; termination; increment) {
    statement(s)
}

3つの式(初期化、終了、および増分)はすべてオプションですが、セミコロンが存在する必要があります。使用しているコードは、次のwhileループと同等です。

while (tail < len) {
    str[tail] = 0;
    tail++;
}

3つの式がすべて欠落しているforループを確認することもよくあります。

for (;;) {
    // something
}

これは無限ループであり、これと同等です。

while (true) {
    // something
}
于 2012-09-06T06:17:04.000 に答える
1

通常のforループの構文はですfor (initialization; termination; increment)。このため、forループを有効にしてコンパイルするには、3つのコンポーネントすべてを事前設定する必要があります。

于 2012-09-06T06:17:50.040 に答える
1

forループには3つのセクションがあります。

for (initialization; condition; update)

そのうちのどのセクションも省略できます。

あなたの例では、初期化セクションはありません(taillenはすでに妥当な値に設定されていると想定されています)。

于 2012-09-06T06:18:16.340 に答える
1

forループは、括弧内に3つの引数を取ります。

1つ目は開始ブロックで、forループのスコープ内(角かっこを開くから閉じるまで、またはこの場合はforループの後の1行)にのみ存在する変数を作成します。

2つ目は条件ブロックで、forループを実行する条件を指定します

3つ目は後処理ブロックで、forループのすべての反復の後に何が起こるかです。

これらのブロックはセミコロンで区切られ、それぞれがオプションです。

通常あなたは持っています

for(int i=0; i<10; i++);

しかし、あなたは持つことができます

int i =0;
for(; i<10; i++);

次のようなループを作成することもできます。

for(;;);
于 2012-09-06T06:18:24.617 に答える
0

これは、何も初期化しないことを意味します。通常、それは次のようなものです

for(i=1;i<something;i++)

あなたの場合、部分i=1(初期化)は省略されていますが、これは完全に正しいです。ただし、forループの初期化部分と条件部分を区切るにはセミコロンが必要です。

于 2012-09-06T06:17:14.960 に答える
0

tailは、コード内のforより上のどこかで初期化する必要があります。これは構文エラーではなく、初期化なしのforです。

于 2012-09-06T06:17:55.747 に答える
0

定義されたforループは、変数tailが以前に宣言されている(できれば初期化されている)ことを意味します

于 2012-09-06T06:18:07.777 に答える
0
for(initialize the variable; condition to variable;increment in variable);

for (;condition;increment);

ここに初期化がないことを意味します。

于 2012-09-06T06:22:12.613 に答える
0

これは、forループ構文があるためです。

int tail;

for(tail = 0; tail <len; tail ++)
{
str [tail] = 0; }

最初のパラメーターはイニシャライザーであるため、変数を初期化した場合は、イニシャライザースペースを空のままにして、代わりにセミコロンを配置します。

于 2012-09-06T06:29:34.373 に答える