• ベストアンサー

for文while文の無限ループの違いについて

for文の無限ループ for(; ;) と、 while文の無限ループ while(1) は、 どのように違うのですか? 処理速度やCPU負荷を考慮して、 どちらを使用するか悩んでいます。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

最適化されれば、どちらも一緒と思います。 心配?ならアセンブラのソースを出力させて確認するのが一番かと。(もしくは、デバッグでコードを確認) ちなみに、Borland Free Compilerでは、どちらのループ命令もジャンプ命令が1個生成されるだけです。 こんな感じのコードになりました loop_top: ループ内処理のコード jmp loop_top

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

よほど間抜けなコンパイラでない限り、for(;;)とwhile(1)の処理速度やCPU負荷は変わりません。 なお、インタプリタであれば、while(1)の方が、構文解析の負荷がやや大きい気はしますが、インタプリタの実装にもよるので一概には言えません。 ところで、本当に処理速度やCPU負荷がシビアなのであれば、for文やwhile文ではなく、goto文を使った方がよいでしょう。特にC++の場合、(非常に単純なものを除けば)for文やwhile文のブロック有効範囲への出入りの際に、オブジェクトの生成・解体や、例外処理のための処理が入る可能性があるからです。

関連するQ&A

専門家に質問してみよう