🚪 はじめてのC
printf("%d\n", 3.14); が 0 や意味不明な数を表示します。printf("%s\n", 5); は Segmentation fault。gcc: warning: format '%d' expects argument of type 'int', but argument 2 has type 'double' [-Wformat=]。
printf は可変長引数なので、渡された値の本当の型を知る手段がありません。書式指定子だけを信じてメモリを読むため、型がずれると読み出す幅も解釈も狂います。
主要な対応を覚えます: int=%d / unsigned=%u / long=%ld / size_t=%zu / float・double=%f(floatは可変長引数でdoubleに昇格します)/ char*=%s / ポインタ=%p。-Wall の書式警告をゼロに保つのが最良の再発防止です。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。