🌕

printfで%dを出力する際の「フィールド幅と精度」のよる出力変化

2022/03/22に公開

整数が正の場合

小の大きさを1。
中の大きさを3。
大の大きさを5とする。

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
("[%1.3d]\n", 11111) [11111] --- --- ---
("[%1.5d]\n", 111) [00111] --- 精度 - 整数の桁数 ---
("[%3.1d]\n", 11111) [11111] --- --- ---
("[%3.5d]\n", 1) [00001] --- 精度 - 整数の桁数 ---
("[%5.1d]\n", 111) [ 111] フィールド幅 - 整数の桁数 --- ---
("[%5.3d]\n", 1) [ 001] フィールド幅 -精度 精度 - 整数の桁数 ---
("[%3.3d]\n", 1) [001] --- 精度 - 整数の桁数 ---
("[%3.3d]\n", 11111) [11111] --- --- ---
("[%1.3d]\n", 111) [111] --- --- ---
("[%5.3d]\n", 111) [ 111] フィールド幅 - (精度、または整数の桁数) --- ---
("[%3.1d]\n", 111) [111] --- --- ---
("[%3.5d]\n", 11111) [11111] --- --- ---
("[%3.3d]\n", 111) [111] --- --- ---

スペースを出力するケース

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
("[%5.1d]\n", 111) [ 111] フィールド幅 - 整数の桁数 --- ---
("[%5.3d]\n", 111) [ 111] フィールド幅 - (精度、または整数の桁数) --- ---

0を出力するケース

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
("[%1.5d]\n", 111) [00111] --- 精度 - 整数の桁数 ---
("[%3.5d]\n", 1) [00001] --- 精度 - 整数の桁数 ---
("[%3.3d]\n", 1) [001] --- 精度 - 整数の桁数 ---

スペースと0の両方を出力するケース

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
("[%5.3d]\n", 1) [ 001] フィールド幅 -精度 精度 - 整数の桁数 ---

整数が負の場合

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
("[%1.3d]\n", -11111) [-11111] --- --- ---
("[%1.5d]\n", -111) [-00111] --- 精度 - 整数の桁数 ---
("[%3.1d]\n", -11111) [-11111] --- --- ---
("[%3.5d]\n", -1) [-00001] --- 精度 - 整数の桁数 ---
("[%5.1d]\n", -111) [ -111] フィールド幅 - 整数の桁数 - 1 --- ---
("[%5.3d]\n", -1) [ -001] フィールド幅 -精度 - 1 精度 - 整数の桁数 ---
("[%3.3d]\n", -1) [-001] --- 精度 - 整数の桁数 ---
("[%3.3d]\n", -11111) [-11111] --- --- ---
("[%1.3d]\n", -111) [-111] --- --- ---
("[%5.3d]\n", -111) [ -111] フィールド幅 - (精度、または整数の桁数)-1 --- ---
("[%3.1d]\n", -111) [-111] --- --- ---
("[%3.5d]\n", -11111) [-11111] --- --- ---
("[%3.3d]\n", -111) [-111] --- --- ---

スペースを出力するケース

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
("[%5.1d]\n", -111) [ -111] フィールド幅 - 整数の桁数 - 1 --- ---
("[%5.3d]\n", -111) [ -111] フィールド幅 - (精度、または整数の桁数)-1 --- ---

0を出力するケース

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
("[%1.5d]\n", -111) [-00111] --- 精度 - 整数の桁数 ---
("[%3.5d]\n", -1) [-00001] --- 精度 - 整数の桁数 ---
("[%3.3d]\n", -1) [-001] --- 精度 - 整数の桁数 ---

スペースと0の両方を出力するケース

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
("[%5.3d]\n", -1) [ -001] フィールド幅 -精度 - 1 精度 - 整数の桁数 ---

%dに0を渡す場合

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
"[%d]\n", 0 [0] --- --- --- --- --- ---
"[%0d]\n", 0 [0] ゼロ --- --- --- --- ---
"[%.d]\n", 0 [] --- ゼロ --- --- --- 0を表示させない
"[%.0d]\n", 0 [] --- ゼロ --- --- --- 0を表示させない
"[%0.0d]\n", 0 [] ゼロ ゼロ --- --- --- 0を表示させない
"[%5d]\n", 0 [ 0] --- --- フィールド幅 - 精度 --- ---
"[%.5d]\n", 0 [00000] --- --- --- 精度 - 1 ---
"[%3.5d]\n", 0 [00000] --- --- 精度 - 1 ---
"[%5.3d]\n", 0 [ 000] --- フィールド幅 - 精度 精度 - 1
"[%5.0d]\n", 0 [ ] ゼロ --- フィールド幅 - 1 --- スペースを表示

スペースを出力するケース

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
"[%5d]\n", 0 [ 0] --- --- フィールド幅 - 精度 --- ---
"[%5.0d]\n", 0 [ ] ゼロ --- フィールド幅 - 1 --- スペースを表示

0を出力するケース

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
"[%.5d]\n", 0 [00000] --- --- --- 精度 - 1
"[%3.5d]\n", 0 [00000] --- --- 精度 - 1

スペースと0の両方を出力するケース

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース) 精度(0出力) 整数の変化
"[%5.3d]\n", 0 [ 000] --- フィールド幅 - 精度 精度 - 1

%dに-0を渡す場合

上記の0を渡す場合と変化なし。

出力結果 フィールド幅 精度 整数の桁数 フィールド幅(スペース出力) 精度(0出力) 整数の変化
"[%d]\n", 0 [0] --- --- --- --- --- ---
"[%0d]\n", 0 [0] ゼロ --- --- --- --- ---
"[%.d]\n", 0 [] --- ゼロ --- --- --- 0を表示させない
"[%.0d]\n", 0 [] --- ゼロ --- --- --- 0を表示させない
"[%0.0d]\n", -0 [] ゼロ ゼロ --- --- --- 0を表示させない
"[%5d]\n", 0 [ 0] --- --- フィールド幅 - 精度 --- ---
"[%.5d]\n", 0 [00000] --- --- --- 精度 - 1
"[%3.5d]\n", 0 [00000] --- --- 精度 - 1
"[%5.3d]\n", 0 [ 000] --- フィールド幅 - 精度 精度 - 1
"[%5.0d]\n", -0 [ ] ゼロ --- フィールド幅 - 1 --- スペースを表示

Discussion