2007-10 << 2007-11 >> 2007-12

2007-11-08 (木)

*

今日は高速教習.一人だけだったので,往復.行きは渋滞していて結構時間がかかりましたが,帰りは高速であっという間.

飲み物を奢ってもらう.

*do ~ while 文

C言語の do ~ while 文の解説を読むと「while 文と違い少なくとも 1 回は必ず実行される」とだけ書かれていることが多いけど,使うのを避ける人も多いような気がします.

do ~ whileを使うべき場合もある…という話ではなくて,コンパイル後の(アセンブリ言語の)コードを読みながらデバッグするときには,do ~ whileを使った方が読みやすくて良いという話.

大抵のCPUアーキテクチャでは分岐命令はジャンプ命令でもあるので,while文を素直にコンパイルすると,ループの最初の条件分岐とループの終わりから先頭に戻るジャンプ命令が必要で,ラベルが最低2つ必要になります.アセンブラでがりがりコードを書いたことがある人ならすぐに様子が思い浮かぶと思います.

ここで,do ~ while文を使えば,分岐命令がそのままループの終わりから先頭に戻るコードになるのでラベルも1つで済みますし,コードの見通しも良くなります.

だから,do ~ while文を使いましょう!とまでは言わなくても,もう少しこいつを見直して欲しいなぁと感じる,今日この頃です.