問題タブ [do-while]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 目的C「do-while」
私が読んでいる本の演習の1つの例は、次のコードを示しています。
私の質問はこれです。whileステートメントは(input / = 10)を示しています。これを正しく理解すれば、基本的に(input = input / 10)を意味します。さて、それが本当なら、なぜループは単に継続的に実行されないのですか?つまり、0を10で割ったとしても、それでも数値が抽出されます。ユーザーが「50607」を入力すると、最初に「7」、次に「0」などが切り捨てられますが、「5」を削除した後にループを終了するのはなぜですか。「5」の後の応答は、プログラムに対する5と6の間の「0」と同じではないでしょうか。
vb.net - Doループ中にVB.NET 2008アプリケーションがクラッシュする
listbox1 の各項目を listbox2 のすべての項目と比較するアプリケーションを作成しています。アイテムが見つかった場合は、両方のリストから削除します。目標は、見つからなかったアイテムのみを両方のリストに残すことです。
問題は、アプリケーションがハングするだけで、結果が得られないことです。私は自分のコードを数回見ましたが、何が起こっているのかわかりません (私が知っているプログラミング初心者...)。
誰でもこれで私を助けることができますか?
コードスニペット:
language-agnostic - 「do while」ループを使用する理由
do whileループを使用する必要がある理由がわかりません。最初に条件が真かどうかをチェックせずに、while ループに含まれるコードを実行することです。
しかし、以下のコードではありません:
以下とまったく同じ:
たぶん、私は非常に愚かで、明らかな何かを見逃していますが、上記の例でdo whileを使用する利点はわかりません。
c++ - "} while(0);" 常に"break;}while(1);"に等しい?
のgccアセンブラ出力を比較しました
と
最適化の有無にかかわらず、出力は同じですが。
いつもそうですか?
実験は理論を証明することはできません、彼らは彼らが間違っていることを示すことができるだけです
c - do while ループを使用したコードの疑問
これは、do while ループを使用している以下に示す小さなコードです。このコードを実行したときに見られる予期しない動作を本当に理解していません。以下に示すこのコードは、do while ループ条件を使用しており、私の知る限り、do while ループは、if 最初にステートメントを実行してから while をチェックインするような方法で実行されます。条件が真かどうかの一部ですが、このコードを実行すると、ループから抜け出すことはなく、永遠に続きます。なぜそれが起こっているのか教えてください。
今、「こんにちは」が印刷されることはありません。
前もってありがとうマディ
c++ - while ループの代わりに do-while を使用する必要があるのはいつですか?
重複の可能性:
「do {…} while ( )」ループが必要になることはありますか?
ループは上部または下部でテストしますか?
while と do while
はいつ do-while が適切ですか?
私は同僚と、原則として、C/C++ では do-wile ループではなく while ループを使用すべきかどうかについて、哲学的な議論をしてきました。
do-while を使用する必要があるのは、同じことを繰り返しテストする必要があり、常に少なくとも 1 回は実行したい場合だけだと思います。一般的に、while ループの方が読みやすいと常に感じていました。
これはやや主観的/個人的なスタイルと見なされる可能性があることは理解していますが、私が正しいか、ここで何かが欠けているかについて、誰かの考えを聞くことに興味があります. 具体的な例は特に歓迎されます。
php - PHP テキストエリア foreach 行
Textarea 投稿の各行のプロセスをループする php スクリプトをコーディングしようとしています。誰かが例を投稿できるかどうか疑問に思っていました。
c# - 'do...while' 対 'while'
重複の可能性:
While と Do While
ループの代わりに do-while を使用する必要があるのはいつですか?
私はしばらくの間プログラミングをしてきました (2 年間の仕事 + 4.5 年間の学位 + 1 年間の大学進学前)。これほど基本的なことに出くわすことがなければ、プログラミングが間違っているのではないかとますます感じています。
適切な状況に遭遇していないだけでしょうか?
while の代わりに do-while を使用する必要がある例にはどのようなものがありますか?
(私の教育はほぼすべて C/C++ で行われ、私の仕事は C# で行われました。したがって、do-while の動作が異なるために完全に意味のある言語が他にある場合、これらの質問は実際には当てはまりません。)
while
明確にするために...私は aと aの違いを知っていdo-while
ます。While は終了条件をチェックしてからタスクを実行します。do-while
タスクを実行し、終了条件をチェックします。
c# - C#で「ループの初期化」を処理する他の方法
まず、gotoステートメントは、最新のプログラミング言語の高レベルの構造によってほとんど無関係になり、適切な代替が利用できる場合は使用しないことに同意します。
私は最近、スティーブマコネルのコードコンプリートのオリジナル版を読み直していて、一般的なコーディングの問題についての彼の提案を忘れていました。何年も前に最初に読んだことがありますが、レシピがどれほど役立つかはわかりませんでした。コーディングの問題は次のとおりです。ループを実行する場合、状態を初期化するためにループの一部を実行してから、他のロジックでループを実行し、同じ初期化ロジックで各ループを終了する必要があります。具体的な例は、String.Join(delimiter、array)メソッドの実装です。
みんなが最初に問題に取り組むのはこれだと思います。引数を戻り値に追加するためにappendメソッドが定義されていると仮定します。
注:これに対するわずかな最適化は、elseを削除して、ループの最後に配置することです。割り当ては通常、単一の命令であり、elseと同等であり、基本ブロックの数を1つ減らし、主要部分の基本ブロックサイズを増やします。その結果、各ループで条件を実行して、区切り文字を追加する必要があるかどうかを判断します。
私はまた、この一般的なループの問題に対処するための他の見解を見て使用しました。最初にループの外側で最初の要素コードを実行してから、2番目の要素から最後までループを実行できます。ロジックを変更して、常に要素と区切り文字を追加することもできます。ループが完了したら、最後に追加した区切り文字を削除するだけです。
後者の解決策は、コードを複製しないという理由だけで私が好む解決策になる傾向があります。初期化シーケンスのロジックが変更された場合でも、2か所で修正することを覚えておく必要はありません。ただし、何かを実行してから元に戻すには余分な「作業」が必要であり、少なくとも余分なCPUサイクルが発生し、String.Joinの例のように多くの場合、追加のメモリも必要になります。
私はこの構成を読むことに興奮しました
ここでの利点は、重複したコードがなく、追加の作業がないことです。最初のループの実行の途中でループを開始します。これが初期化です。do while構文を使用して他のループをシミュレートすることに制限されていますが、変換は簡単で、読み取るのは難しくありません。
では、質問です。幸いにも、これを作業中のコードに追加してみましたが、機能しませんでした。C、C ++、Basicでうまく機能しますが、C#では、親スコープではない別の字句スコープ内のラベルにジャンプすることはできません。とてもがっかりしました。だから私は疑問に思っていました、C#でこの非常に一般的なコーディングの問題(私は主に文字列の生成で見ます)に対処するための最良の方法は何ですか?
おそらく要件をより具体的にするために:
- コードを複製しないでください
- 不必要な仕事をしないでください
- 他のコードより2倍または3倍以上遅くならないでください
- 読みやすい
私が述べたレシピでおそらく苦しむかもしれないのは読みやすさだけだと思います。ただし、C#では機能しないので、次善の策は何ですか?
*編集* いくつかの議論のためにパフォーマンス基準を変更しました。ここでは通常、パフォーマンスが制限要因ではないため、より正確な目標は、不合理にならないようにすること、これまでで最速にならないようにすることです。
私が提案する代替の実装が嫌いな理由は、コードを複製して一方の部分を変更する余地を残しているため、または私が一般的に選択する実装では、操作を「元に戻す」必要があり、その操作を元に戻すには余分な思考と時間が必要になるためです。あなたがやったこと。特に文字列操作では、これにより通常、1つのエラーが発生したり、空の配列の説明に失敗したり、発生しなかった何かを元に戻そうとしたりすることができます。
c - while(0) はマクロでどのように機能しますか?{}
このトピックは、このフォーラムや他のすべてのフォーラムで何度も議論されてきましたが、それでも私には疑問があります. 助けてください。
do{} while(0)
in マクロは Linux カーネルでどのように機能しますか? 例えば、
どのようにプリエンプションを無効にしますか?
再スケジュールはどのように行われますか?
同様に、mutex ロックなどのマクロも見てきました。これはどのように役立ちますか? 次の問題については理解していますが、上記の例については理解していません。
編集:
の次のコードはrt_mutex_lock
どうですか?
rt_mutex_deadlock_account_lock
カーネル内の 2 つの場所で定義されているため、混乱しています。
でkernel/rtmutex-debug.c
:
でkernel/rtmutex.h
:
i2c ドライバーの新しいカーネル 2.6.35.4 ではrt_mutex_lock(&adap->bus_lock);
、mutex_lock()
. これはどのようにロックしますか?