Erlang的比较运算符
op
Description
==
等于
/=
不等于
=<
小于等于
<
小于
=
大于等于
大于
=:=
精确的等于
=/=
精确的不等于
等于和精确等于的区别:
如果要比较两个数,如果两个数之间是不同的类型,比如float和int那么,==操作会首先把两个数字转换成相同的相同类型。举例:
1> 1==1.0.
true
2> 1=:=1.0.
false
所以一般推荐用精确等于去比较
比较运算符的大小级别:
number < atom < reference < fun < port < pid < tuple < list < bit string
3> 1 > a.
false
op
Description
Argument type
number
number
number
number
number
/
浮点数除法,结果是浮点数
number
bnot
一元not运算符
integer
div
整数除法,结果是整数
integer
rem
求玉树
integer
band
and运算
integer
bor
or运算
integer
bxor
xor异或运算
integer
bsl
左移位操作
integer
bsr
右移位操作
integer
逻辑运算符
op
Description
not
一元逻辑not
and
逻辑and
or
逻辑or
xor
逻辑xor
原子true 和false表示逻辑的”真”和”假”
此外,逻辑运算符还包括一个orelse 和andalso
原始的or和and是不带”短路运算”操作的,而orelse和andalso是带短路运算操作的。
短路运算举例
Express1 and Express2
Express1 andalso Express2
如果Express1 为假,and会继续判断Express2,然后整体判定为假,而andalso”短路”操作,直接判定整个表达式为假,从效率上来说,andalso会高一些