河野真治 @ 琉球大学情報工学です。

In article <u4qqpbl0q.fsf@anet.ne.jp>, OOTANI TAKASHI <tksotn@anet.ne.jp> writes
> 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 の方がきれいだと思うけど、人それぞれかな。
逆に  switch 文はいらないんだという説もあるみたいですね。
現実には、if else if 連鎖の最適化でも結構難しいから、
siwtch 文みたいな制限があった方が良いだろうと思います。

この拡張だと、cond1 - cond3 の順序関係が不定になりますよね。
else if は上から順々なんでしょうけど。式に副作用がでまくりの
C だとちょっとうれしくないな。
    case *p++ ==' a': ...
    case *p++ ==' b': ...
とか書く奴がきっと出るような気がする。

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科