3

重複の可能性:
「for(;;)」は「while (TRUE)」より速いですか? そうでない場合、なぜ人々はそれを使用するのですか?

この for ループを含むコードが見つかりました。while(true)たとえば、それを使用する正確な機能は何ですか? メモリ使用量が少ないですか?

4

4 に答える 4

11

for(;;)機能的には同等ですwhile(true)が、一部のコンパイラ (MSVC の cl を含む) での「条件式は定数です」という警告を回避します。

于 2013-01-18T13:03:39.223 に答える
3

この構造は、 C プログラミング言語の本 (セクション 3.5)で Kernighan と Ritchie によって一般化されました。

for ステートメント

for (expr1; expr2; expr3)
    statement

expr1 または expr3 が省略された場合、単純に展開から削除されます。テスト expr2 が存在しない場合、永続的に true と見なされるため、

for (;;) {
    ...
}

breakは「無限」ループであり、おそらく aまたはなどの他の手段によって中断されますreturn

と の間にはまったく違いはありませfor(;;)while(true)

于 2013-01-18T13:04:29.967 に答える
1
while(true)
{

}

常に私が使用してきたものであり、手動で切断する必要があるループに他の人が使用しているのを見てきました。

一部のコンパイラは、これが間違っている可能性があると警告しています。そうではありません。

両方に対して生成されるアセンブリ コードはまったく同じです。違いはありません。

于 2013-01-18T13:04:15.037 に答える
1

まず、ループの使用は要件に依存し、それに基づいて、いつどのループを使用するかを決定できます。@Luchian が尋ねたことを確認するだけで、それがわかります。

第二に、それは明らかに特定の言語のインタープリター/コンパイラーの特定の実装に依存します。

とは言っても、理論的には、どちらの実装の方が高速であれば、どちらの実装も実装できる可能性が高いため、違いはせいぜい無視できるはずです。

于 2013-01-18T13:09:42.087 に答える