重複の可能性:
「for(;;)」は「while (TRUE)」より速いですか? そうでない場合、なぜ人々はそれを使用するのですか?
この for ループを含むコードが見つかりました。while(true)
たとえば、それを使用する正確な機能は何ですか? メモリ使用量が少ないですか?
重複の可能性:
「for(;;)」は「while (TRUE)」より速いですか? そうでない場合、なぜ人々はそれを使用するのですか?
この for ループを含むコードが見つかりました。while(true)
たとえば、それを使用する正確な機能は何ですか? メモリ使用量が少ないですか?
for(;;)
機能的には同等ですwhile(true)
が、一部のコンパイラ (MSVC の cl を含む) での「条件式は定数です」という警告を回避します。
この構造は、 C プログラミング言語の本 (セクション 3.5)で Kernighan と Ritchie によって一般化されました。
for ステートメント
for (expr1; expr2; expr3)
statement
expr1 または expr3 が省略された場合、単純に展開から削除されます。テスト expr2 が存在しない場合、永続的に true と見なされるため、
for (;;) {
...
}
break
は「無限」ループであり、おそらく aまたはなどの他の手段によって中断されますreturn
。
と の間にはまったく違いはありませfor(;;)
んwhile(true)
。
while(true)
{
}
常に私が使用してきたものであり、手動で切断する必要があるループに他の人が使用しているのを見てきました。
一部のコンパイラは、これが間違っている可能性があると警告しています。そうではありません。
両方に対して生成されるアセンブリ コードはまったく同じです。違いはありません。
まず、ループの使用は要件に依存し、それに基づいて、いつどのループを使用するかを決定できます。@Luchian が尋ねたことを確認するだけで、それがわかります。
第二に、それは明らかに特定の言語のインタープリター/コンパイラーの特定の実装に依存します。
とは言っても、理論的には、どちらの実装の方が高速であれば、どちらの実装も実装できる可能性が高いため、違いはせいぜい無視できるはずです。