変換仕様
Tiger より後のバージョンではわからないが、それ以前は Java でサンプルを作ると
System.out.println("hogehoge");
というようなコードを使って文字をコンソールに表示させていた。
System クラスの static 変数 out がコンソールとひもづけられていて、その実体は java.io.PrintStream だ。
標準出力につながっているストリームオブジェクトといったところか。
これと同じようなことをCでやろうとすると、よく使われるのが
printf("Hello World\n");
という構文。これに変数などを渡して、その内容を表示させることができる。
ここで、上記Javaにないものに変換仕様というものがある。
%d や %s などで該当する変数を表示させるというもの。
Java の System.out.println に引数として渡されるのは文字列として扱われる。
つまり、toString() された状態で扱われている。
この部分でもう少し柔軟な対応がCだとできる。
char value = 'a';
printf("%d\n",value);
printf("%c\n",value);
とやると、最初は 97 という出力になる。どうも a はASCIIコードだと 97 という意味のようだ。
一つの変数でも変換処理なく別の形で扱えるのは便利っぽいが、
Java の java.io.PrintStream.print メソッドではこれができない。
Java は、低いレイヤーの処理を書くよりもアプリケーション層で使われることが多い。
あったとしてもあまり使わないかな・・・(シリアライズは使われるが)。
少なくともこうしたことができずに困ったことはない。
あってもSun提供のライブラリ内で行う変換処理とかのレベルかもしれないが。
Cで書いているとこうしたことができて便利、、、ということもあるのかな@_@???