MAEDA Atusi <maeda-news@ialab.is.tsukuba.ac.jp> writes:
> else ifの連鎖って、K&RでCを勉強して知るまでは必要だとも思わなかったで
> すね。Pascalを使っていた頃は、後の(文法的には内側の)ifは字下げして書く
> のが当然だと思っていたから。初めて見た時は「なんて気持ち悪い字下げだ」
> と思いました。

else if の連鎖で書きたい場合って、意味的には、if 文のネストじゃなくて、
複数の条件があって、最初に真になった条件に対応する実行部を実行する
という場合が大部分だと思います。それら条件は順序性があるだけで対等なので、
LISPのCOND構文のように対等に条件が書けるほうがよいと思います。
そういう意味では内側のifのインデントを深くして、各条件のカラム位置が
ずれるのは非常に違和感があります。

elif/elsif/elseif/else if の中ではそういう意味で一番短いelifが好きです。
ifと同じく2文字の適当なキーワードがあればそれの方がいいですが。
(現状のcでは最初のifの後に空白をいくつか置いてelse ifと条件のカッコ位置を
 そろえて書くことも多いです)

PL/IのSELECT/WHENはLISPのCONDのようにもCのswitch/caseのようにも使えるので、
それに習って、Cではswitch構文が、
switch {
case (cond1): stmt11; stmt12; break;
case (cond2): stmt21; stmt22; break;
case (cond3): stmt31; stmt32; break;
default:      stmt01; stmt02; break;
}
のように拡張されれば、else ifの連鎖は大部分不要になるでしょうね。
まあ、そこまでやらなくて、else ifの連鎖のままでいいと思いますけど。
-- 
tksotn