Cではループ文はforとwhileがありますが、whileは基本的に使いません。なぜなら
while(); for(;;);のように必要なバイト数が同じでforの方が書けるところが多いのでわざわざwhileを使う必要がないからです。
「{}」のために2バイトも使うのは非常にもったいないのでブロックはできる限り書きません。
for(x;y;z){a=b;c=d;} for(x;y;z)a=b,c=d;このようにカンマを使うことでブロックを外すことができます。どうしてもブロックが必要となってしまうのはforのなかにforを2つ以上書く場合です。
for(;;){for(;;);for(;;);}この場合はブロックを外すことができません。これはブロックがあるだけでなくforがたくさんあるなど縮める余地のあるコードであることが多いので、中のforを1つにまとめるなどの工夫でブロックを外すと短くなることがあります。
このページへのコメント
コメントありがとうございます。
for文一重化やforとmain再帰の比較の定式化は僕も興味あるので研究中です。
だいたいのパターンぐらいは見つけてみたいですね。
nnです。
ご開Wikiおめでとうございます。
ループで一番の話題は、forの一重かだと思います。どういう時にできて、どういう時にできないのか。その辺を定式化できたらすごいと思います。勝手なコメントですみません。