为什么 Printf 中不推荐使用 %b?

ano*_*nol 2 printf ocaml

Printf模块API 详细介绍了类型转换标志,其中:

%B: convert a boolean argument to the string true or false
%b: convert a boolean argument (deprecated; do not use in new programs).
Run Code Online (Sandbox Code Playgroud)

但它没有说明为什么%b被弃用。为什么%B优于%b

cam*_*ter 5

人们会这样正式回答:使用大写字母进行转换,例如%Cand %S(不是%cand %s)以 OCaml 可解析的格式打印内容。%b随后对 to进行了更改%B,因为它将布尔值打印为true和 ,false这也是 OCaml 可解析的。

您可以在这里找到背景故事:http://caml.inria.fr/mantis/view.php ?id=1438 。有一个分支引入了这个,然后改变了二进制文件%B的含义。%b后者破坏了向后兼容性,因此该部分被拒绝。结果,今天我们有两个布尔值%B和的转换%b