Solaris 動的トレースガイド

幅と精度の指定子

最小フィールド幅は、任意のフラグ指定子と 10 進文字列の組み合わせで指定できます。この場合、フィールド幅は、指定された桁数になります。フィールド幅は、アスタリスク (*) でも指定できます。この場合、フィールド幅は、int 型の追加引数によって決定されます。たとえば、int 変数 w の値からフィールド幅を決定し、このフィールド幅で整数 x を出力する場合、次のような D 文を使用します。

printf("%*d", w, x);

フィールド幅は、疑問符 (?) でも指定できます。この場合は、オペレーティングシステムカーネルのデータモデル内で、アドレスを 16 進値で表すために必要な文字数に基づいて、フィールド幅が決定されます。たとえば、カーネルが使用しているデータモデルが 32 ビットの場合は 8、64 ビットの場合は 16 になります。

変換の精度は、ピリオド (.) に続く 10 進文字列、またはピリオドに続くアスタリスク (*) で指定できます。アスタリスクを使って精度を指定した場合、変換引数の前に追加された int 型変数によって精度が決定されます。フィールド幅と精度の両方をアスタリスクで指定した場合、printf() の引数は、幅、精度、値の順で指定する必要があります。