>while文と無限ループの違い入力中の回答があります。ページを離れますか?※ページを離れると、回答が消えてしまいますページを離れるA回答を続ける入力中のお礼があります。01:05回答数:8件はじめまして。大学でC++を習い始めたばかりの初心者です。両者の違いがイマイチわかりません。私のイメージですと、while文は条件が真である限り何度でも判定し条件が偽になればループを抜ける。無限ループもif文を使った条件が真にならない限りbreakしない。while文の偽と判定する部分がif文で真と判定するだけで、同じような気がするのですが...ド素人の考えで恥ずかしいのですが、違いをわかりやすく教えてください。通報するこの質問への回答は締め切られました。03:02>while文と無限ループの違いそもそも、両者の定義はまったく違います。while文はC言語などでループ(繰り返し)処理を実現するための予約語であって、無限ループとはアルゴリズム上(実装上)でのwhile文の書き方の一つでしかありません。>while文の偽と判定する部分がif文で真と判定するだけで、同じような気がするそのとおりです、上記で書いたように書き方の一つでしかありません。この場合、繰り返し処理を終わる可能性があるものは無限ループとは呼びません。無限ループというのは単に実装上で繰り返し処理の終わり(繰り返し処理を抜ける機会)が無いループの事を言っているに過ぎません。flag!=0){break;}flag++;}と書こうが両者は無限ループではありません。(厳密には多少違いますが、処理的な差異はありません)無限ループとは以下の場合があります。flag!=0){}flag++;}//一番分かりやすい無限ループwhile(1){}などです。ちなみにfor文ではfor(;;){}などと書いたりします。break;}処理を抜ける条件が複数あって、1つの条件式にする事ができない。ループの途中で処理を終了させたい様な時に、(2)の様な使い方をします。return;}の様に複数箇所でモジュールから抜ける処理が有るとデバッグ時に、ブレークポイントを複数設定しないといけませんし、設定に洩れがあると終了時の変数の値を確認できないまま処理から抜けてしまうので(4)の様にする場合が有ります。時の変数値の確認ができますし、大規模システムの場合に行われるログ出力処理も1箇所で済ませる事ができます。01:51基本的には同じですが、使い方が違います。通常のwhile文の場合。{処理A;処理B;処理C;i++;}この場合は、処理A、処理B、処理Cをそれぞれ10回処理を行ったら、処理が終了します。無限ループと言われているやり方^^。(実際は無限ループとは言いません。)以下のようにコーディングします。10){処理C;break;}i++;}処理A、処理Bをそれぞれ10回処理して、処理Cのみ9回しか処理を行わない場合に、このように記述します。?処理結果が違ってきますよね。プログラミングをする場合は、言語だけではなく、どのような処理をプログラミングするのかを考えれば、理解できると思います。このような、回答が欲しかったのでしょうか?因みに、無限ループは、永遠に処理が終わらない事です。頑張って勉強してくださいね^^。{do_something();}が同じではないか?ということで良いですか?コンパイラから見れば同じかもしれませんが、プログラマから見ればコードの見やすさ、保守性などが違います。){}としているだけですから、同じものです。違いといえば、使い方の差ですかね。条件によって、途中で処理を中断させたい場合とか、条件によって異なる処理をさせた後でループを抜けたいとか。whileの中に基本的な条件をいれておいて、例外的にifで対応ということもできますが、ループを抜ける条件があちこちにかかれると、可読性が悪くなりますし。すれば正しいというのはなくて、可読性やメンテナンスのしやすさといったいろいろな条件を加味して、どちらを使用するか決めることになります。break;}との違いでしょうか。#1の方の言うとおり、条件を判断する箇所が違うだけで全く同じです。要するにプログラマの好きなように書けばいいのです。(1)の書き方は一定の条件の場合、(2)の書き方は繰り返すごとに条件が変わる場合とかに経験上、分けられます(←あくまでも個人的な私見)。01:22質問の意味を完全にはよく把握していないので推察して回答します。見当違いでしたらすみません。if文で抜ける場合には、抜ける判定がされたときに、if文の後からloopの終わりまでのプログラムが実行されずに抜けてしまうところが実用的に異なると思います。そのif文をloopの最初か最後に置いたら、whileを使ったloopと同じになると思います。あと「無限ループ」という言葉ですが、判定するif文が入って無限には続かないものは、「無限ループ」とは言わないような気がします。私は実際にプログラムを強制終了でもさせない限り回り続けるループのことを「無限ループ」と呼ぶと思っていました。世の中にはそう呼んでいる世界もあるかもしれないので、確実なことは知りません。01:14はい、全く同じです。ダメだ・・・分からない。回答数ランキングです。どのように違うのですか?処理速度やCPU負荷を考慮して、どちらを使用するか悩んでいます。最適化されれば、どちらも一緒と思います。心配?ならアセンブラのソースを出力させて確認するのが一番かと。Compilerでは、どちらのループ命令もジャンプ命令が1個生成されるだけです。loop_top他の回答も見るQbreak文でループを一気に抜けるにはbreak文でループを一気に(2個以上)抜けたい場合はどのようにすればいいのでしょうか?たとえば下のプログラムで1から2に抜けたいすなわちifとforの2つの中括弧を同時に抜けたい場合にはどうやってbreak文を記述すればいいのでしょうか?(goto文は使わないということでお願いします。さんのようにフラグで制御するしかないでしょう。文について言えば、「無闇やたらに使うべきではないが、使うべき所で使うのをためらってはいけない」ということです。使うな!」と言う人がいますが、これは間違っています。文を避けるために、フラグなどを組み合わせて複雑怪奇な構造にすることの害の方が、余程大きいです。「#if~#endif」がすこーぷの範囲ですから、似ていますが、正確には違います。0~#else」が無効と排他になります。While文(ループ)内の文字入力While文で、1文字入力をやれば思うようにうまくいかない。%s)ならうまくいく。対する私が意図している結果とを示します。