Rust操作符
操作符(Operator)通常是由一个或多个特殊的符号组成(也有非特殊符号的操作符,如as
),比如+ - * / % & *
等等,每个操作符都代表一种动作(或操作),这种动作作用于操作数之上。简单来说,就是对操作数执行某种操作,然后返回操作后得到的结果。
比如加法操作3 + 2
,这里的+
是操作符,加号两边的3和2是操作数,加法符号的作用是对操作数3加上操作数2,得到计算结果5,然后返回5。
此处仅列出一部分操作符并给出它们的含义,剩下其他的操作符将在后面章节涉及到的时候再介绍。
操作符类别 | 操作符及描述 | 示例 |
---|---|---|
一元运算符 | - :取负(加负号) | -x |
! :对整数值是位取反,对布尔值是逻辑取反 | !x | |
算术运算符 | + - * / % :加、减、乘、除、取模 | x + y |
位运算符 | `& | ^ ! << >>`:位与、位或、位异或、位取反、左移、右移 |
逻辑运算符 | `& && | |
赋值操作符 | = | x = y |
复合赋值操作符 | `+= -= *= /= %= &= | = ^= <<= >>=` |
等值比较运算符 | == != :相等和不等 | x == y |
大小比较运算符 | < <= > >= :小于、小于等于、大于、大于等于 | x > y |
以上操作符有几点需要说明:
-
各种运算符有优先级,可使用小括号
()
来强制改变多个运算符运算时的优先级,如(x + y) * z
-
! & |
操作符有两种意思,根据上下文决定:- 操作数是整数值时:按位取反、按位与、按位或
- 操作数是布尔值时:逻辑取反、逻辑与、逻辑或
-
& &&
都表示逻辑与,但后者会短路计算。同理| ||
都表示逻辑或,但后者会短路计算例如,
false & true
在知道左边的操作数是false后,仍然会计算右边的操作数,而false && true
知道左边是false后,已经能够确定整个表达式的结果是false,它会直接返回false,而不会再计算右边的操作数。#![allow(unused)] fn main() { // 不会panic报错退出,因为不会评估 || 运算符右边的操作数 if true || panic!("not bang!!!") {} // 会panic报错退出,因为会评估 | 运算符右边的操作数 if true | panic!("bang!!!") {} }