ゆとりーなの日記

日記的な事を書いて行くと思はれる

switchと後藤さん

最近少々興味深いコードを見かけました。

void hoge(int val) {
  printf("value %d\n");

  switch(val) {
    case 1:
      printf("value is 1\n");
      break;
    case 2:
      printf("value is 2\n");
      break;
    .
    .
    .
    .
    case 17:
      printf("value is 17\n");
      break;
    defualt:
      printf("unknown value\n");
  }
}

要はswitch文があつて、1~17までのcase節があつて、default節があるといふコードです。
このコードを適當に回してみると、ある事實に氣附きます。valueが0の時が何回かあつたのですが、どうもこれがdefault節に引掛つてゐないやうなのです。つまり、"value 0"とswitch前で表示されてゐるにも關らず、"unknown value"が表示されないのです。
で、コードをエディタでよおく眺めてみると妙な違和感があるわけです。defaultに色が附いてゐないのです(はてダのシンタックスハイライトだと分らないですが...)。種明かしをすると、一見"default節"に見えるものはdefaultの皮を被つた"defualtといふgoラベル"だつたといふオチでした。
switch文の中にラベル普通に書けるのかと普段使はない機能なだけに少々驚いた今日この頃でした。いかにgoto文がコードの暗號化に寄與するかが示された一例と言へませう。