Linux计算器bc学习

本文是一篇关于Linux中bc计算器的详细教程,介绍了其基本使用、内置变量、变量定义、运算及内置函数、语言语法、程序选项和实例应用,帮助读者掌握这个强大的命令行计算器。
摘要由CSDN通过智能技术生成

Linux内的bc计算器是一个非常强大的计算器,内置了一套类似C语言的语法。学习bc可以不用高级编程语言的情况下解决一系列的问题。但是目前网上没有找到很好的中文教程,在此自己写一个,方便以后查阅。

基本使用

最基本的是日常使用的计算,这样子和Windows自带的计算器没有太大的差别,不过一目了然的输入和运算优先级的支持还是要强大很多。具体方法如下:

bc
1+2*3-5*2
-3

注:上述示例意为输入bc后启动,输入1+2*3-5*2后按回车,得到结果-3

内置变量

但是在输入5/4的时候,会得到1。这是因为bc有若干内置变量,其中的scale内置变量指定运算要用到的小数点后的位数,默认为0,即只支持指定运算。因此,在运算前设置scale=2,就会得到正确的结果啦!^_^

总共有4个内置变量,为:

变量名称 作用
scale 指定运算要用到的小数点后的位数
ibase 指定输入的进制数
obase 指定输出的进制数
last或者. 最近打印的数字(扩展)

使用内置变量进行进制转换

指定输入输出进制的情况下就能轻松处理进制转换了!比如二进制转16进制:

ibase=2
obase=16
1010
101

这是怎么回事?不是应该是A吗?原因在于:先指定了二进制的输入,在指定obase变量的时候,16也被认为是二进制的输入啦!在二进制的输入情况下,所有的非0全部认为是1,于是16被看作是11,即3进制。1010对应十进制是10,101对于的3进制也是10。就是这样啦。

正确的方法应该是先指定obase,如下:

obase=16
ibase=2
1010
A

变量

bc可以支持用户自定义变量。变量有2种类型,数字和数组。注意,不支持字符串类型的变量,数组也只能是数字的数组。至于变量的赋值,和C语言语法一致:

var_name = 123;
array_name[13] = 2;

在以上的例子中,声明了一个var_name的变量,赋值为123。声明了一个名为array_name的数组,它的0到12号元素均为0,13号元素为2。注意,分号可有可无,但是如果是写脚本程序的话,写上为好。

所有的变量在未赋值时均为0。

如果在变量前面加入auto,则表明是局部变量,否则为全局变量。(函数的参数为局部变量,是例外情况)

运算以及内置函数

bc支持以下几种运算:

运算符 解释
++,– 同C语言,也分前置和后置
+,-,*,/ 同C语言
+=,-=,*=,/= 同C语言
%,%= 取余。当scale=0时同C语言,否则见下
^ 指数运算(只支持整数的指数)
<,<=,>,>=,==,!= 同C语言
!, &&, || 同C语言

注意取余运算,当scale不为0时,如,scale=2,则:
4 % 3 = 0.01
这是由于4/3=1.33,4-3*1.33=0.01

另外,bc还有4个内置函数,分别是:

名称 作用
length 得到一个变量的有效数字个数
read 得到用户输入
scale 不同于内置变量,这个内置函数意为得到变量小数点后的数字的个数
sqrt 开方运算

具体示例参见后面的程序。

语言语法

主要的语法完全可以参照C语言。注意的是:当一个值没有被赋予变量时,会直接输出,因此可以通过直接输入字符串的方式得到输出。字符串以""包裹。

关键字

有以下的关键字:

关键字 作用
print 输出变量,后面是一个列表,以,分隔,会将其依次输出,注意,不会输出换行符,需要自己添加”\n”。关于转义字符,和C语言相同。
{} 大括号构成语言块,作用和C语言相同
if,else 用法和C语言相同
for 和C语言相同
break 和C语言相同
continue 和C语言相同
while 和C语言相同
return 和C语言相同
halt 当运行到此语句时,程序退出

函数

函数的声明方法:

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值