下記プログラムでは、なぜかswitch文が意図した通りに動作してくれません。


#include <stdio.h>

int main(int argc, char *argv[])

  if (argc != 2) {
    printf(”エラー\n”);
    return 0;
  }

  /* 引数に応じて処理分岐 */
  switch (atoi(argv[1])) {
  case 0:
    printf(”0\n”);
    break;
  case 1:
    printf(”1\n”);
    break;
  case 2:
    printf(”2\n”);
    break;
  defalt:
    printf(”その他\n”);
    break;
  }



これは、defaultの綴りが間違っているからです。defaultではなく、defaltになっています。さらに間違えたdefalt:はラベルと解釈されるのでコンパイルエラーにもならないのです。

昔は、シンタックス・ハイライト機能や自動補完機能付きのテキストエディタはなかったので、こんな面白い不具合もあったんですね。