2007-11-08 (木)
*do ~ while 文
C言語の do ~ while 文の解説を読むと「while 文と違い少なくとも 1 回は必ず実行される」とだけ書かれていることが多いけど,使うのを避ける人も多いような気がします.
do ~ whileを使うべき場合もある…という話ではなくて,コンパイル後の(アセンブリ言語の)コードを読みながらデバッグするときには,do ~ whileを使った方が読みやすくて良いという話.
大抵のCPUアーキテクチャでは分岐命令はジャンプ命令でもあるので,while文を素直にコンパイルすると,ループの最初の条件分岐とループの終わりから先頭に戻るジャンプ命令が必要で,ラベルが最低2つ必要になります.アセンブラでがりがりコードを書いたことがある人ならすぐに様子が思い浮かぶと思います.
ここで,do ~ while文を使えば,分岐命令がそのままループの終わりから先頭に戻るコードになるのでラベルも1つで済みますし,コードの見通しも良くなります.
だから,do ~ while文を使いましょう!とまでは言わなくても,もう少しこいつを見直して欲しいなぁと感じる,今日この頃です.