logo头像
Snippet 博客主题

Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)

本文于 3232 天之前发表,文中内容可能已经过时。

参考:http://www.erlang.org/doc/reference_manual/expressions.html

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