なぜそうなのかわかりません:
Printf.sprintf "%08s" "s" = Printf.sprintf "%8s" "s"
- : bool = true
言い換えれば、私は期待します:
Printf.sprintf "%08s" "s"
- : string = "0000000s"
実際の結果ではありません:
- : string = " s"
誰かがなぜそうなのかを明確にしてもらえますか?
のドキュメントprintf
0
から、フラグが に適用されないことがわかります%s
。
0:数値変換の場合、スペースの代わりにゼロで埋めます。
(強調は私です。)
C では、未定義の動作につながることに注意してください。
C でフォーマット指定子を試すと、次の警告が表示されます。
warning: flag '0' results in undefined behavior with 's' conversion specifier
私のコンパイラが狂っていないと仮定すると (Mac OS X 10.8.2)、これは OCaml の変換が問題ないことを示唆しています。