では、どのループを使用し、その理由は?
2 つのうちどちらかを選択する必要がある場合は、おそらくwhile
ループを使用します。ループはよりシンプルでクリーンであり、シグナルが更新されるまで次のコード ブロックが継続的に実行されることを他の開発者に明確に伝えます。
もう一度これを行うことができfor(; signal == 0; i++);
ます。これが実際に製品コードになるかどうかを前提としていますが、より簡潔なようです。
それでも、このすべてのメソッドは、オーバーフローのために少し危険に思えます。組み込みデバイスでさえ、ほとんどのクロックは依然として非常に高速であり、おそらく基になるデータ型の上限にすぐに達するでしょう。これが本番になるかどうかはわかりません。コードも、それが許容できる結果であるかどうかもわかりません。
両者の違いは何ですか?
for
あなたが言ったように、両方とも同じ目標を達成しますが、私が示したように、または他の人が言及したように、他の方法があると確信してwhile
います.良くも悪くも、非常にfor
柔軟な の非常にユニークな使い方を見てきました。
実行にかかる時間に違いはありますか?それとも純粋にあなたの好みに基づいていますか?
パフォーマンスに関しては、基本的にコンパイラがそれをどのように解釈するかを決定します。同じバイナリを生成する場合と生成しない場合があるため、実行時間は、アセンブリを生成するか、プロファイリングを実行するようにコンパイラに依頼できます。
uvision 4 IDE http://www.keil.com/product/brochures/uv4.pdfは実際に 94 ページに記載されているように逆アセンブルをサポートし、103 ページに記載されているようにプロファイリングをサポートしているようです。使用しています。
違いが十分に小さい場合は、数ナノ秒余分に圧縮するためだけに読みやすさを犠牲にしないでください。これは単なる私の意見です。
私があなたに与えることができる最善のアドバイスはこれです。できる限り最善を尽くして、明確なコードを書くことです。つまり、ほとんどの人は、それほど努力せずに何を伝えているかを見ることができます。それは効率的で保守しやすいということです。