2016-10-10 78 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進行了兩次轉換。

相關問題