4

なぜそうなのかわかりません:

Printf.sprintf "%08s" "s" = Printf.sprintf "%8s" "s"
- : bool = true

言い換えれば、私は期待します:

Printf.sprintf "%08s" "s"
- : string = "0000000s"

実際の結果ではありません:

- : string = "       s"

誰かがなぜそうなのかを明確にしてもらえますか?

4

2 に答える 2

5

ドキュメントprintf0から、フラグが に適用されないことがわかります%s

0:数値変換の場合、スペースの代わりにゼロで埋めます。

(強調は私です。)

C では、未定義の動作につながることに注意してください。

于 2013-01-23T18:39:47.983 に答える
2

C でフォーマット指定子を試すと、次の警告が表示されます。

warning: flag '0' results in undefined behavior with 's' conversion specifier

私のコンパイラが狂っていないと仮定すると (Mac OS X 10.8.2)、これは OCaml の変換が問題ないことを示唆しています。

于 2013-01-23T18:45:47.827 に答える