在Erlang中,运算符被用于执行各种类型的计算和操作,包括比较、数值运算、移位和逻辑运算。下面是对这些运算符的简要概述:
### 比较运算符
用于比较两个值的大小或是否相等。
- `==`:等于(注意:在Erlang中,对于非数字类型,推荐使用`=:=`进行比较,因为它不会进行自动类型转换)
- `/=`:不等于
- `<`:小于
- `>`:大于
- `<=`:小于或等于
- `>=`:大于或等于
### 数值运算符
用于执行数学运算。
- `+`:加法
- `-`:减法
- `*`:乘法
- `/`:除法(整数除法会向下取整,浮点数除法保留小数)
- `div`:整数除法,结果向下取整
- `mod`:求余
- `rem`:求余(与`mod`类似,但在处理负数时有所不同)
### 移位运算符
用于对数的二进制表示进行移位操作。
- `bsl`:位左移(bitwise shift left)
- `bsr`:位右移(bitwise shift right,逻辑右移,高位补0)
- `band`:位与(bitwise AND)
- `bor`:位或(bitwise OR)
- `bxor`:位异或(bitwise XOR)
- `bnot`:位非(bitwise NOT)
### 逻辑运算符
用于逻辑运算,通常用于布尔值的组合。
- `and`:逻辑与(如果两边的值都为真,则结果为真)
- `or`:逻辑或(如果两边的值中至少有一个为真,则结果为真)
- `xor`:逻辑异或(两边的值一真一假时,结果为真)
- `not`:逻辑非(取反)
请注意,Erlang是一种函数式编程语言,其运算符的使用方式可能与其他一些编程语言有所不同。特别是比较运算符`==`,在Erlang中用于数字比较时通常可以正常工作,但比较复杂数据结构(如列表、元组等)时,建议使用`=:=`来避免类型自动转换可能带来的意外。