erlang运算符

Erlang的比较运算符

opDescription
==等于
/=不等于
=<小于等于
<小于
>=大于等于
>大于
=:=精确的等于
=/=精确的不等于
等于和精确等于的区别:

如果要比较两个数,如果两个数之间是不同的类型,比如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

opDescriptionArgument type
+ number
- number
+ number
- number
* number
/浮点数除法,结果是浮点数number
bnot一元not运算符integer
div整数除法,结果是整数integer
rem求玉树integer
bandand运算integer
boror运算integer
bxorxor异或运算integer
bsl左移位操作integer
bsr右移位操作integer

逻辑运算符

opDescription
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会高一些