72 lines
No EOL
2.3 KiB
Text
72 lines
No EOL
2.3 KiB
Text
{{language
|
|
|exec=interpreted
|
|
|checking=static
|
|
|hopl id=1854
|
|
}}
|
|
|
|
'''bc''' ("basic calculator") is the standard calculator for [[Unix]] systems. <br>
|
|
bc boasts unlimited precision, to handle numbers with very many digits. <br>
|
|
With the bc language, you can write programs that perform numeric calculations
|
|
and print the results.
|
|
|
|
;See also :
|
|
* [[wp:Bc programming language|Bc programming language]] on Wikipedia
|
|
* [[:Category:Dc|dc]] - the unix '''d'''esktop '''c'''alculator.
|
|
|
|
bc has an interactive mode, which is convenient for brief calculations:
|
|
|
|
$ '''bc'''
|
|
'''2 + 3'''
|
|
5
|
|
'''2 ^ 200'''
|
|
1606938044258990275541962092341162602522202993782792835301376
|
|
'''i = -5'''
|
|
'''3 - i * 4'''
|
|
23
|
|
'''obase = 2'''
|
|
'''i'''
|
|
-101
|
|
'''ibase = 16'''
|
|
'''FE80'''
|
|
1111111010000000
|
|
|
|
Division and <tt>sqrt</tt> will not give an infinite number of digits. <br>
|
|
The special variable <tt>scale</tt> controls when to stop.
|
|
|
|
$ '''bc'''
|
|
'''65.9 / 3'''
|
|
21
|
|
'''scale = 6'''
|
|
'''65.9 / 3'''
|
|
21.966666
|
|
'''sqrt(2)'''
|
|
1.414213
|
|
'''scale = 60'''
|
|
'''sqrt(2)'''
|
|
1.414213562373095048801688724209698078569671875376948073176679
|
|
|
|
bc language resembles [[C|C language]]: bc has most of the same operators
|
|
and control structures ('if', 'while', 'for'). <br>
|
|
Expressions print themselves, unless they are assignments. <br>
|
|
The newline is a statement separator, like the semicolon.
|
|
|
|
bc has excellent numeric operations, but is a poor language.
|
|
The original bc, the "Bell Calculator" of Unix V7,
|
|
translated the program to [[dc]] and inherited the limitations of [[dc]].
|
|
|
|
* Names of variables, and custom functions, may have only one letter.
|
|
* There is no 'else' branch of an 'if' statement.
|
|
* Relational operators (== <= => != < >) only work in the condition of an 'if', 'while' or 'for' statement.
|
|
* There are no boolean operators (! && ||).
|
|
|
|
Some newer implementations, like [[GNU bc]] and [[OpenBSD bc]],
|
|
discard these silly limitations, but users can still feel their effects. <br>
|
|
OpenBSD says, "a = b < c is interpreted as "(a = b) < c, which is probably not what the programmer intended," and "!a < b is interpreted as !(a < b)".
|
|
|
|
bc can only print a string, and has no other string operations,
|
|
so bc cannot do tasks like [[reverse a string]]. <br>
|
|
bc has no way to read user input, except to go to interactive mode
|
|
after loading a program.
|
|
|
|
[[Category:Mathematical programming languages]]
|
|
[[Category:Utility]] |