web-dev-qa-db-ja.com

bcはdcとどう違うのですか?

dcbcの計算機の違いは何ですか?

いつdcを使用し、いつbcを使用すればよいですか?

32
syntagma

dcは非常に古いツールで、bcよりも少し古いです。 Wikipediaページ を引用するには:

これは最も古いUnixユーティリティの1つであり、Cプログラミング言語の発明さえもさかのぼります。そのヴィンテージの他のユーティリティと同様に、強力な機能セットを備えていますが、構文は非常に簡潔です。

構文は逆ポーランド記法です。つまり、基本的に引数(つまり、数値)が最初に続き、その後に演算子が続きます。 dcの基本的な使用例は次のとおりです。

echo '3 4 * p' | dc

計算結果を出力するためにpが必要な場合。一方、bcはより馴染みのあるインフィックス表記法を使用しているため、より直感的に使用できます。 bcの使用例は次のとおりです。

echo '3 * 4' | bc

どちらを使用しますか?

bcはPOSIXによって標準化されているため、おそらく2つのうち最も移植性があります(少なくとも最近のシステムでは)。手動で電卓の作業をしている場合は、それが間違いなく選択です(あなたがいくらかマゾヒストでない限り)。 dcはまだ使用できますが、ここでは逆ポーランド記法が役立つ場合を示します。合計したい数値のストリームを出力するプログラムがあるとします。例:

23
7
90
74
29

dcでこれを行うのは非常に簡単です(少なくとも、各演算子が3つ以上の数値を取ることができる最新の実装では)+pストリームへ、例えば:

{ gen_nums; echo +p } | dc

しかし、bcを使用すると、+between各数値を確認し、すべてが同じ行にあることを確認しますが、最後に改行があることを確認します。

{ gen_nums | sed '$ !s/$/+/' | tr -d '\n'; echo; } | bc
38
Graeme

2つの基本的な違いは、dc逆ポーランド記法 を使用することです。出力を生成するためであっても、明示的なコマンドが必要です。

次のように言うと、bcに2つの整数を追加できます。

bc <<< "2+4"

そしてそれは6単独の行。ただし、dcでは次のように言う必要があります。

dc <<< "2 4 +p"

dcを使用して、多くの楽しいことを行うこともできます。私の答えを参照してください ここ 生成について

Hello World!

dcを使用します。

dc <<< "8 9 * P101P108P108P111P4 8 * P81 6 + P111P114P108P100P33P"

9
devnull

私の控えめな意見では、できるだけ少ない言葉でGNU dcはGNU bcと3つの点で異なります:

1)bcの数学ライブラリが心配な場合は、基本的な算術を行うとき、必要なものに集中し、注意散漫を避けるために、可能な限り多くのキーストローク(JanŁukasiewiczの言葉:括弧なしの表記)を保存します。

2)Microsoft Windows 7のコマンドラインでは、GNU dcはGNU bcが消費する(〜360K)よりもメモリを消費します(〜320K))。

3)GNU dcでは、GNU bcよりもdcの方がはるかに細かく制御できます。たとえば、スタックおよびレジスタコマンドはGNU = bc。

両方のバージョン1.07.1 win32は https://embedeo.org/ws/command_line/bc_dc_calculator_windows/ にあります

0
bc_vs._dc