2016-10-10 35 views
1

Printf module API详细介绍了类型转换的标志,其中:为什么%b在Printf中弃用?

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

但它并没有说为什么%b已被弃用。为什么%B好于%b?通过在ocaml的可解析格式以大写字母像%C%S(不%c%s)打印的东西转换:

+2

因为在大多数支持printf样式格式的语言中,'%b',如果它意味着什么,意味着打印二进制文件(一串0和1)? –

+1

@ChrisDodd根据我发现的文档,它不代表(标准)C或C++中的任何内容,代表bash中的转义字符串和java中的布尔值。显然,Python使用'b',但是在一个自定义的格式化指令(例如'{x:b}')中,这不太可能与'%b'混淆。我发现在Perl中提到'%b'二进制文件,但这里'%B'是一个准同义词(最后是'0bxxxxx ...'或'0Bxxxxx ...'),因此我不'没有看到一个令人信服的理由,一个在另一个之上。至少现在:当然,在OCaml中'%b'被弃用时,事情可能会有所不同。 – Virgile

回答

3

人们会回答officialy等。 %b%B的变化紧随其后,因为它打印的布尔值为truefalse,它们也是OCaml可分析的。

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

相关问题