ocaml sprintf澄清

mbu*_*nit 4 printf ocaml

我不明白为什么会这样:

Printf.sprintf "%08s" "s" = Printf.sprintf "%8s" "s"
- : bool = true
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望:

Printf.sprintf "%08s" "s"
- : string = "0000000s"
Run Code Online (Sandbox Code Playgroud)

而不是实际结果:

- : string = "       s"
Run Code Online (Sandbox Code Playgroud)

有人可以澄清为什么会这样吗?

md5*_*md5 5

文档中printf,您可以看到该0标志不适用于%s.

0:对于数字转换,使用零而不是空格填充.

(重点是我的.)

请注意,在C中,它会导致未定义的行为.