2016-10-10 10 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

人々は次のように正式に答えるでしょう。 %bから%Bへの変更は、truefalseというブール値を出力します。これはOCamlも解析可能です。

ここにバックストーリーがあります:http://caml.inria.fr/mantis/view.php?id=1438。この%Bを導入し、バイナリの意味を%bに変更した支店がありました。後者は後方互換性を壊し、その部分が拒絶された。その結果、今日ではブール値%B%bの2つの変換が行われました。

関連する問題