研究用のプログラムをいじっていて30分くらいこのバグがわからず。。。時間を無駄にしました。コンパイルエラーはでません。実行が意図した通りにならなりません(タブや改行はそれらしい文字で表示して、それ以外の文字はそのまま表示する仕様です)。
まさか、これでコンパイルエラーがでないとは思いませんでしたので、まさかこんな間違いをしているとは気づかず。。。時間がかかりましたこれでも前職ではC言語で仕事していたんですが。。。。お恥ずかしい限りです。
以下、簡略化したコードです。気になる人は実際にコピペして入力して確かめてみてください。いや。。。驚きです。ちなみにjavac1.8ではエラーメッセージ自体は意味不明ですがエラーがでました。
ちなみに、僕が試したCコンパイラはApple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)以下です。
直感ですが、意外と学生さんの方が早く気づくのかもしれないな。。。と思います。
#include <stdio.h> int main() { char a; scanf("%c", &a); switch(a) { case '\n': printf("\\n"); break; case '\t': printf("\\t"); break; defalut: printf("%c", a); } return 0; }