Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我不明白为什么会这样:
Printf.sprintf "%08s" "s" = Printf.sprintf "%8s" "s" - : bool = true
换句话说,我希望:
Printf.sprintf "%08s" "s" - : string = "0000000s"
而不是实际结果:
- : string = " s"
有人可以澄清为什么会这样吗?
从 的文档中printf,您可以看到该0标志不适用于%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 的转换很好。