算术运算符
OP | Description | Argument type |
---|---|---|
+ | 一元 + | number |
- | 一元 - | number |
+ | 加法 | number |
- | 减法 | number |
* | 乘法 | number |
/ | 浮点除法 | number |
div | 整数除法 | integer |
bnot | 一元 not 位运算 | integer |
rem | 整数求余 | integer |
band | 与运算 | integer |
bor | 或运算 | integer |
bxor | 异或运算 | integer |
bsl | 左移运算 | integer |
bsr | 右移运算 | integer |
6> +1.
1
7> -1.
-1
8> 1+1.
2
9> 4/2.
2.0
10> 5 div 2.
2
11> 5 rem 2.
1
12> 2#10 band 2#01.
0
13> 2#10 bor 2#01.
3
14> 8 bsr 1.
4
15> 8 bsl 1.
16
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 |
---|---|
not | 一元逻辑非 |
and | 逻辑与 |
andalso | 短路与 |
or | 逻辑或 |
orelse | 短路或 |
xor | 逻辑异或 |
原子true 和false表示逻辑的”真”和”假”;此外,逻辑运算符还包括一个orelse 和andalso,原始的or和and是不带”短路运算”操作的,而orelse和andalso是带短路运算操作的。
短路运算举例
Express1 and Express2
Express1 andalso Express2
如果Express1 为假,and会继续判断Express2,然后整体判定为假,而andalso”短路”操作,直接判定整个表达式为假,从效率上来说,andalso会高一些
数组运算
最后还有个数组运算,++或者–-,很简单
1> [1,2] ++ [3,4].
[1,2,3,4]
2> [1,2] -- [3,4].
[1,2]
3> [1,2] -- [1,4].
[2]
4> [1,2] ++ [1,4].
[1,2,1,4]
5> [1,2] -- [1,2].
[]